我有yahoo
帐户。是否有任何 python 代码可以从我的帐户发送电子邮件?
问问题
25706 次
6 回答
16
是的 ; 这是代码:
import smtplib
fromMy = 'yourMail@yahoo.com' # fun-fact: from is a keyword in python, you can't use it as variable, did abyone check if this code even works?
to = 'SomeOne@Example.com'
subj='TheSubject'
date='2/1/2010'
message_text='Hello Or any thing you want to send'
msg = "From: %s\nTo: %s\nSubject: %s\nDate: %s\n\n%s" % ( fromMy, to, subj, date, message_text )
username = str('yourMail@yahoo.com')
password = str('yourPassWord')
try :
server = smtplib.SMTP("smtp.mail.yahoo.com",587)
server.login(username,password)
server.sendmail(fromMy, to,msg)
server.quit()
print 'ok the email has sent '
except :
print 'can\'t send the Email'
于 2013-05-05T04:55:02.303 回答
7
关于使用 yahoo 的 smtp 服务器,我绞尽脑汁(简短地)。465 是行不通的。我决定通过端口 587 进行 TLS 路由,并且能够进行身份验证和发送电子邮件。
import smtplib
from email.mime.text import MIMEText
SMTP_SERVER = "smtp.mail.yahoo.com"
SMTP_PORT = 587
SMTP_USERNAME = "username"
SMTP_PASSWORD = "password"
EMAIL_FROM = "fromaddress@yahoo.com"
EMAIL_TO = "toaddress@gmail.com"
EMAIL_SUBJECT = "REMINDER:"
co_msg = """
Hello, [username]! Just wanted to send a friendly appointment
reminder for your appointment:
[Company]
Where: [companyAddress]
Time: [appointmentTime]
Company URL: [companyUrl]
Change appointment?? Add Service??
change notification preference (text msg/email)
"""
def send_email():
msg = MIMEText(co_msg)
msg['Subject'] = EMAIL_SUBJECT + "Company - Service at appointmentTime"
msg['From'] = EMAIL_FROM
msg['To'] = EMAIL_TO
debuglevel = True
mail = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
mail.set_debuglevel(debuglevel)
mail.starttls()
mail.login(SMTP_USERNAME, SMTP_PASSWORD)
mail.sendmail(EMAIL_FROM, EMAIL_TO, msg.as_string())
mail.quit()
if __name__=='__main__':
send_email()
于 2013-10-15T23:21:42.247 回答
5
在此处访问雅虎帐户安全页面
您需要生成一个应用密码 - 这是屏幕底部的一个选项。在您的脚本中使用此页面上生成的密码 Yahoo。
于 2020-09-09T14:37:21.270 回答
3
支持非ASCII字符;你可以使用email
包:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from email.header import Header
from email.mime.text import MIMEText
from getpass import getpass
from smtplib import SMTP_SSL
# provide credentials
login = 'you@yahoo.com'
password = getpass('Password for "%s": ' % login)
# create message
msg = MIMEText('message body…', 'plain', 'utf-8')
msg['Subject'] = Header('subject…', 'utf-8')
msg['From'] = login
msg['To'] = ', '.join([login, ])
# send it
s = SMTP_SSL('smtp.mail.yahoo.com', timeout=10) #NOTE: no server cert. check
s.set_debuglevel(0)
try:
s.login(login, password)
s.sendmail(msg['From'], msg['To'], msg.as_string())
finally:
s.quit()
于 2013-05-05T06:43:06.453 回答
0
在一年半的时间里,我在 PC 和 Pi 上运行了以下 def。我有一个脚本每周六中午通过电子邮件发送给我,作为一般健康检查。工作部分是..
def my_callback():
server = smtplib.SMTP('smtp.mail.yahoo.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, message)
server.quit()
大约两周前,它停止在我所有的设备上工作。运行脚本我发现“server.starttls()”行是失败的根源。环顾四周,我发现恢复到端口 465 和 SSL,删除 server.starttls() 解决了这个问题。
def my_callback():
server = smtplib.SMTP_SSL('smtp.mail.yahoo.com', 465)
server.login(username,password)
server.sendmail(fromaddr, toaddrs, message)
server.quit()
其他人有这个问题吗?雅虎改变了什么?
于 2021-10-11T12:31:50.700 回答
0
有几个问题。一个已通过已发布的答案解决。
- 使用 TLS(端口 465)
- 确保您有应用程序密码。雅虎和其他电子邮件服务已更新其身份验证做法,以限制无需 2 因素身份验证即可登录的内容。如果您想使用 smtplib 进行身份验证,您需要在此处创建应用密码:https ://login.yahoo.com/myaccount/security/app-password
如果你这样做,那么你将能够发送电子邮件
于 2021-07-02T12:30:14.457 回答