burning357 2015-08-14 11:33 采纳率: 0%
浏览 2601
已结题

关于Javax.mail的554异常

import java.io.File;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;
import javax.swing.JOptionPane;

public class MailSender {

private final transient Properties props = System.getProperties();// 发送邮件的props文件

private transient MailAuthenticator authenticator;// 邮件服务器登录验证

private transient Session session;// 邮箱session

/*
 * 初始化邮件发送器
 * 
 * @param smtpHostName SMTP邮件服务器地址
 * 
 * @param username 发送邮件的用户名(地址)
 * 
 * @param password 发送邮件的密码
 */
public MailSender(final String smtpHostName, final String username, final String password) {
    init(username, password, smtpHostName);
}

/*
 * 初始化邮件发送器
 * 
 * @param username 发送邮件的用户名(地址),并以此解析SMTP服务器地址
 * 
 * @param password 发送邮件的密码
 * 
 */

public MailSender(final String username, final String password) {
    // 通过邮箱地址解析出smtp服务器,对大多数邮箱都管用
    final String smtpHostName = "smtp." + username.split("@")[1];
    init(username, password, smtpHostName);
}

private void init(String username, String password, String smtpHostName) {
    // 初始化props
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.host", smtpHostName);
    // 验证
    authenticator = new MailAuthenticator(username, password);
    // 创建session
    session = Session.getInstance(props, authenticator);
}

/*
 * 群发邮件
 * 
 * @param recipients 收件人们
 * 
 * @param subject 主题
 * 
 * @param content 内容
 * 
 */

public void send(String[] recipients, String subject, String content, String filename)
        throws AddressException, MessagingException {
    // System.out.println(props.getProperty("mail.smtp.host"));
    // 创建mime类型邮件
    final MimeMessage message = new MimeMessage(session);
    Multipart multipart = new MimeMultipart();
    // 设置发信人
    message.setFrom(new InternetAddress(authenticator.getUserName()));
    // 设置收件人们
    final int num = recipients.length;
    InternetAddress[] addresses = new InternetAddress[num];
    for (int i = 0; i < num; i++) {
        addresses[i] = new InternetAddress(recipients[i]);
    }
    message.setRecipients(RecipientType.TO, addresses);
    // 设置主题
    message.setSubject(subject);
    // 设置邮件内容
    BodyPart bodypart = new MimeBodyPart();
    bodypart.setContent(content.toString(), "text/html;charset=utf-8");
    multipart.addBodyPart(bodypart);
    // 添加附件
    if (new File(filename).exists()) {
        BodyPart bp = new MimeBodyPart();
        FileDataSource fileds = new FileDataSource(filename);
        bp.setDataHandler(new DataHandler(fileds));
        bp.setFileName(fileds.getName());
        multipart.addBodyPart(bp);
    } else {
        int n = JOptionPane.showConfirmDialog(null, "找不到压缩文件是否继续?", "找不到压缩文件", JOptionPane.YES_NO_OPTION);
        if (n == JOptionPane.NO_OPTION) {
            throw new RuntimeException();
        }
    }
    // 将multipart对象放到message中
    message.setContent(multipart);
    // 保存邮件
    message.saveChanges();
    // 发送
    Transport.send(message);
}

}


```为什么QQ邮箱跟139手机邮箱都测试成功,126却老是报错
Could not connect to SMTP host: SMTP.126.com, port: 25, response: 554
  • 写回答

1条回答 默认 最新

  • 1234569854 2015-08-14 11:58
    关注

    ............................

    评论

报告相同问题?

悬赏问题

  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch