javase-关于Javax.mail的554异常

问题描述

关于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

解决方案

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

解决方案二:

初试javax.mail

时间: 2024-08-03 15:38:52

javase-关于Javax.mail的554异常的相关文章

java mail出现 javax.mail.MessagingException: QUOTA not supported;

问题描述 在邮件调试quota过程中获取:Quota[]quotas=imapStore.getQuota("INBOX");抛出异常:javax.mail.MessagingException:QUOTAnotsupported;nestedexceptionis:com.sun.mail.iap.BadCommandException:GETQUOTAROOTnotsupportedatcom.sun.mail.imap.IMAPStore.getQuota(IMAPStore.j

javamail imap 网易邮箱打开文件夹时报错:javax.mail.MessagingException: A4 NO EXAMINE The lo

问题描述 Sessionsession=Session.getInstance(props,null);imap连接代码:Propertiesprops=getProperties();props.setProperty("mail.imap.host",host);props.setProperty("mail.imap.port",""+port);props.setProperty("mail.imap.auth.login.di

java.net.UnknownHostException和javax.mail.MessagingException的问题

问题描述 javax.mail.MessagingException:UnknownSMTPhost:mail02.secpg.com;nestedexceptionis:java.net.UnknownHostException:mail02.secpg.comatcom.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1225)atcom.sun.mail.smtp.SMTPTransport.protocolConnect

JAVAMAIL 接收邮件 javax.mail.FolderClosedException: java.io.EOFException: EOF on

问题描述 使用JAVAMAIL接收邮件的时候包了javax.mail.FolderClosedException:java.io.EOFException:EOFonsocketjava.lang.IllegalStateException:FolderisnotOpen错误让我很郁闷用我的126的邮箱都是可以用的就是QQ邮箱不能用前段时间还用过我发现他能连通能得到收件箱里有几封邮件,可就是打开邮件内容的时候报错.请各位大大帮忙解答下,邮箱设置正确,因为我之前都用QQ测试的. 解决方案 解决方案

javax.mail发送邮件带附件

废话不多说直接上代码 package test; import java.io.File; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.Message.RecipientType; import javax.mail.PasswordAuthentication; import javax.mail.Session; impor

javaxmail-有一个关于javax.mail 发邮件 使用 代理服务器的问题 代理服务器需要密码

问题描述 有一个关于javax.mail 发邮件 使用 代理服务器的问题 代理服务器需要密码 这两天想做一个集中监控 发现服务器性能下降 或数据库的表空间不够时 就给自己的邮箱发邮件提醒的功能 可是公司用的内网,接外网要用公司的代理服务器 props.setProperty("proxySet", "true"); props.setProperty("socksProxyHost", "10.10.101.9"); prop

初试javax.mail

转自:http://blog.csdn.net/zhuyu_deng/article/details/12507545 最近在项目中用到发送邮件的功能,由于以前没有接触过,找了很多资料才终于把它弄出来,今天写下这些,算是做个总结吧.  1.首先定义一个邮件的数据结构类  public class EmailData() {       String from   = null;  //发件人       String[] recipients = null;  //收件人,可以多个       

Java发送邮件javax.mail的实现方法_java

直接上源码:1. 邮件的基本信息(方便就直接设置为静态了) 下面最好是做为一个javabean package com.lgf.Email; import java.util.Date; public class EmailMessage { /** * 邮件的信息,可以自己进行设置. * 为了方便直接全部设置为静态 */ // 收件人邮箱 public static String TO = "xxx@xxx.com"; // 发件人邮箱 public static String FR

java发送javax.mail邮件实例讲解_java

平时我们网上逛网站的时候,经常会用到网站的注册.有很多方法,比如发短信验证,发邮箱验证.最近在SSH框架下,做了一个简单的邮件发送激活链接到邮箱,然后激活注册用户的一个功能.我用到的MailServer是易邮邮件服务器,引用的是javax.mail.jar包.javamail顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输. [常用类介绍] 下面有一些常用的类,给大家介绍一下: [Authenticator]