鱼C论坛

 找回密码
 立即注册
查看: 1980|回复: 1

[已解决]求助,SMTP的简单发送邮件,为什么直接告诉我发送失败

[复制链接]
发表于 2016-11-3 10:18:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import smtplib
from email.mime.text import MIMEText
from email.header import Header


# SMTP第三方服务
mail_host = "smtp.163.com"
mail_user = "huyang_yu"
mail_pass = "huyang"
mail_postfix = "163.com"


# 发送者和接收者
sender = "xxx@163.com"
receiver = "xxx@qq.com"

# 发送内容
msg = MIMEText("啦啦啦,我有一头小毛驴,我从来也不骑,有一天,我骑着它上街区去赶集", "plain", "utf-8")
msg["From"] = Header("胡杨", "utf-8")
msg["To"] = Header("卖布的画家", "utf-8")
msg["Subject"] = Header("第一次邮件发送", "utf-8")

# 发送
try:
    smtpObj = smtplib.SMTP(mail_host, 25)
    smtpObj.sendmail(sender, receiver, msg.as_string())
    print("发送成功")
except smtplib.SMTPException:
    print("发送失败")


执行结果 简单粗暴
直接告诉我发送失败,
新手小白,求指导





最佳答案
2016-11-3 17:48:04
我没有用Header,但是我觉得你msg["From"]和msg["To"]是不是应该是邮箱地址而不是名字?
我把我前几天写的代码发上来你看下,分普通文本文件和html格式的文件
  1. '''
  2. AUTHOR : ltian
  3. PROJECT_NAME : py_project.py
  4. FILE_NAME : 发送邮件
  5. TIME : 2016/10/31 - 15:24
  6. DESCRIPTION:邮件
  7. '''
  8. import smtplib
  9. from email.mime.text import MIMEText

  10. #txt文本邮件
  11. def send_simple_txt_email(to_list, title = '这是标题呀', content='这是内容呀'):
  12.     msg = get_msg_by_content(to_list, title, content, user_addr, False)

  13.     print('开始发送邮件')
  14.     send_email_main(user_host, user_addr, user_password, to_list, msg)

  15. #html格式
  16. def send_simple_html_email(to_list, title = '这是标题呀', content='<h1>这是内容呀</h1>'):
  17.     msg = get_msg_by_content(to_list, title, content, user_addr, True)
  18.     print('开始发送邮件')
  19.     send_email_main(user_host, user_addr, user_password, to_list, msg)

  20. #根据是否html是否,返回msg信息
  21. def get_msg_by_content(to_list, title, content, user_addr, is_html):
  22.     msg = None
  23.     if is_html:
  24.         msg = MIMEText(_text=content, _subtype='html', _charset='gb2312')
  25.     else:
  26.         msg = MIMEText(_text=content, _subtype='plain', _charset='gb2312')
  27.     msg['Subject'] = title
  28.     msg['From'] = user_addr
  29.     msg['To'] = ";".join(to_list)
  30.     return msg

  31. #发送邮件主体方法
  32. def send_email_main(host, user, pwd, to_list, msg):
  33.     try:
  34.         server = smtplib.SMTP()
  35.         server.connect(host=host)
  36.         server.login(user, pwd)
  37.         server.sendmail(from_addr=user_addr, to_addrs=to_list, msg=msg.as_string())
  38.         server.close()
  39.         return True
  40.     except Exception as e:
  41.         print(e)
  42.         print('发送邮件出现异常,请检查')
  43.         return False

  44. def main():
  45.     '''
  46.     可在参数中添加
  47.     标题:title
  48.     内容:content
  49.     '''

  50.     #简单文本
  51.     #send_simple_txt_email(to_list)

  52.     #html格式
  53.     send_simple_html_email(to_list)

  54. if __name__ == '__main__':
  55.     user_addr = '******@163.com'
  56.     user_password = '******'
  57.     user_host = 'smtp.163.com'

  58.     to_list = ['******@qq.com']
  59.     main()


复制代码


user_*都是发件人的账号密码
to_list 是接收人列表
其他的都有注释
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-3 17:48:04 | 显示全部楼层    本楼为最佳答案   
我没有用Header,但是我觉得你msg["From"]和msg["To"]是不是应该是邮箱地址而不是名字?
我把我前几天写的代码发上来你看下,分普通文本文件和html格式的文件
  1. '''
  2. AUTHOR : ltian
  3. PROJECT_NAME : py_project.py
  4. FILE_NAME : 发送邮件
  5. TIME : 2016/10/31 - 15:24
  6. DESCRIPTION:邮件
  7. '''
  8. import smtplib
  9. from email.mime.text import MIMEText

  10. #txt文本邮件
  11. def send_simple_txt_email(to_list, title = '这是标题呀', content='这是内容呀'):
  12.     msg = get_msg_by_content(to_list, title, content, user_addr, False)

  13.     print('开始发送邮件')
  14.     send_email_main(user_host, user_addr, user_password, to_list, msg)

  15. #html格式
  16. def send_simple_html_email(to_list, title = '这是标题呀', content='<h1>这是内容呀</h1>'):
  17.     msg = get_msg_by_content(to_list, title, content, user_addr, True)
  18.     print('开始发送邮件')
  19.     send_email_main(user_host, user_addr, user_password, to_list, msg)

  20. #根据是否html是否,返回msg信息
  21. def get_msg_by_content(to_list, title, content, user_addr, is_html):
  22.     msg = None
  23.     if is_html:
  24.         msg = MIMEText(_text=content, _subtype='html', _charset='gb2312')
  25.     else:
  26.         msg = MIMEText(_text=content, _subtype='plain', _charset='gb2312')
  27.     msg['Subject'] = title
  28.     msg['From'] = user_addr
  29.     msg['To'] = ";".join(to_list)
  30.     return msg

  31. #发送邮件主体方法
  32. def send_email_main(host, user, pwd, to_list, msg):
  33.     try:
  34.         server = smtplib.SMTP()
  35.         server.connect(host=host)
  36.         server.login(user, pwd)
  37.         server.sendmail(from_addr=user_addr, to_addrs=to_list, msg=msg.as_string())
  38.         server.close()
  39.         return True
  40.     except Exception as e:
  41.         print(e)
  42.         print('发送邮件出现异常,请检查')
  43.         return False

  44. def main():
  45.     '''
  46.     可在参数中添加
  47.     标题:title
  48.     内容:content
  49.     '''

  50.     #简单文本
  51.     #send_simple_txt_email(to_list)

  52.     #html格式
  53.     send_simple_html_email(to_list)

  54. if __name__ == '__main__':
  55.     user_addr = '******@163.com'
  56.     user_password = '******'
  57.     user_host = 'smtp.163.com'

  58.     to_list = ['******@qq.com']
  59.     main()


复制代码


user_*都是发件人的账号密码
to_list 是接收人列表
其他的都有注释
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-23 16:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表