python 网易stmp发送邮件及问题列举

python 网易stmp发送邮件及问题列举

构造发送邮件

def format_email(subject, content):
    msg = MIMEText(("机器 %s :。" % machine_name) + content)
    msg['Subject'] = Header(subject, 'utf-8')
    # 554 from和to不能相同 subject要修改
    msg['From'] = ACC
    # 这里的recv是 a@qq.com,b@qq.com这样的
    msg['To'] = recv

    return msg

建立连接并发送

def send_email(subject, content):
    msg = format_email(subject, content)

    smtp = smtplib.SMTP()
    for i in range(3):
        try:
            smtp.connect(HOST)
            smtp.login(ACC, PASSWD)
            break
        except:
            print_time("第三方邮箱连接失败,稍后重试。")
            time.sleep(5)

    for i in range(3):
        try:
            recv_lst = msg['To'].split(",")
            # 这里recv_lst 是["a@qq.com", "b@qq.com]这样的
            smtp.sendmail(ACC, recv_lst, msg.as_string())

            print_time("邮件发送成功")
            break
        except:
            print_time("发送邮件失败,稍后重试。")
            print_time(msg)
            traceback.print_exc()
            time.sleep(5)

    smtp.quit()

问题

错误码554

一个可能的原因是subject不对,尽量使用中文构造subject!!
而且这个会根据不同的ip来对相同的subject作出不同处理,在自己家网络可以发送,但是在别的地方却直接554。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Java实现网易企业邮箱SMTP消息发送,需要使用JavaMail API。以下是一个简单的示例代码: ```java import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class EmailSender { public static void main(String[] args) { final String username = "your_email@example.com"; final String password = "your_email_password"; String fromEmail = "your_email@example.com"; String toEmail = "recipient@example.com"; Properties props = new Properties(); props.put("mail.smtp.host", "smtp.qiye.163.com"); props.put("mail.smtp.port", "25"); props.put("mail.smtp.auth", "true"); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(fromEmail)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmail)); message.setSubject("Test Email"); message.setText("Hello, this is a test email from Java."); Transport.send(message); System.out.println("Email Sent Successfully"); } catch (MessagingException e) { throw new RuntimeException(e); } } } ``` 在上面的代码中,你需要把`your_email@example.com`和`your_email_password`替换为你的网易企业邮箱地址和密码,`recipient@example.com`替换为你要发送邮件的收件人地址。你还需要设置SMTP服务器的主机名和端口号。在这个例子中,我们使用网易企业邮箱的SMTP服务器。 在运行代码之前,请确保你已经包含了JavaMail API。如果你使用Maven,则可以添加以下依赖项: ```xml <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> ``` 这个例子只是一个简单的入门示例。你可以使用JavaMail API来发送HTML邮件,添加附件,设置抄送和密送等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值