Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python3中使用smtplib通过电子邮件发送变量值?_Python_Python 3.x_Email_Smtplib - Fatal编程技术网

如何在python3中使用smtplib通过电子邮件发送变量值?

如何在python3中使用smtplib通过电子邮件发送变量值?,python,python-3.x,email,smtplib,Python,Python 3.x,Email,Smtplib,当消息是直接键入函数的字符串时,我可以发送电子邮件,但当它是变量时,我不能发送电子邮件 此代码适用于: import smtplib server = smtplib.SMTP_SSL('smtp.gmail.com', 465) server.login("something@gmail.com", "somepassword") server.sendmail( "something@gmail.com", "somethingelse@gmail.com", "a manually

当消息是直接键入函数的字符串时,我可以发送电子邮件,但当它是变量时,我不能发送电子邮件

此代码适用于:

import smtplib

server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login("something@gmail.com", "somepassword")

server.sendmail(
"something@gmail.com", 
"somethingelse@gmail.com", 
"a manually typed string like this")
server.quit()
但这段带有变量字符串的代码不会:

import smtplib

server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login("something@gmail.com", "somepassword")

someVariable = "any string"

server.sendmail(
"something@gmail.com", 
"somethingelse@gmail.com", 
someVariable)
server.quit()
更确切地说,第二个版本确实发送了一封电子邮件,但正文是空的。没有角色出现

如何使第二个版本工作


print(someVariable)
print(type(someVariable))
给出正确的(预期的)输出。

您可以尝试以下方法

import smtplib

server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login("something@gmail.com", "somepassword")

server.sendmail(
"something@gmail.com", 
"somethingelse@gmail.com", 
"{}".format(someVariable))
server.quit()

我想您只需要将变量格式化为字符串,您可以尝试以下操作

import smtplib

server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login("something@gmail.com", "somepassword")

server.sendmail(
"something@gmail.com", 
"somethingelse@gmail.com", 
"{}".format(someVariable))
server.quit()

我想您只需要将变量格式化为字符串

我对Office365的个人体验让我想到了这个解决方案:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

msg = MIMEMultipart()

msg['Subject'] = 'confirmation email'
msg['From'] = 'my.address@email.net'
msg['To'] = ", ".join(['your.address@email.net','another.address@email.net'])

body = 'Example email text here.'

msg.attach(MIMEText(body, 'html')) #set to whatever text format is preferred
最后一个问题是它如何与您当前的脚本相匹配

server.sendmail('my.address@email.net','your.address@email.net',msg.as_string())

我使用Office365的个人经验使我找到了以下解决方案:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

msg = MIMEMultipart()

msg['Subject'] = 'confirmation email'
msg['From'] = 'my.address@email.net'
msg['To'] = ", ".join(['your.address@email.net','another.address@email.net'])

body = 'Example email text here.'

msg.attach(MIMEText(body, 'html')) #set to whatever text format is preferred
最后一个问题是它如何与您当前的脚本相匹配

server.sendmail('my.address@email.net','your.address@email.net',msg.as_string())

事实证明,这是可行的,灵感来源于
[这些文档][1]
和罗杰斯·德维普先前的回答(这对我来说并不适用):

def发送电子邮件(msge):


事实证明,这是可行的,灵感来源于
[这些文档][1]
和罗杰斯·德维普先前的回答(这对我来说并不适用):

def发送电子邮件(msge):


非常感谢。最后一行给出了以下错误:发生了异常:AttributeError'MIMEMultipart'对象没有“to_string”属性。对此很抱歉-方法名称实际上是。as_string(),内存不足。很高兴您能够找到解决方案!非常感谢。最后一行给出了以下错误:发生了异常:AttributeError'MIMEMultipart'对象没有“to_string”属性。对此很抱歉-方法名称实际上是。as_string(),内存不足。很高兴您能够找到解决方案!这不会改变结果。电子邮件仍然发送且仍然为空。请注意,“someVariable”的类型实际上是字符串。这不会改变结果。电子邮件仍然发送且仍然为空。请注意,“someVariable”的类型实际上是字符串。