如何在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”的类型实际上是字符串。