java邮件发送

参考链接:
http://blog.csdn.net/karem/article/details/4646071
http://blog.csdn.net/xietansheng/article/details/51673073
http://blog.csdn.net/lao_sun/article/details/6948796

使用javax.mail类库,qq邮箱和163邮箱在使用时,需要得到pop3和smtp的授权码,否则报没有授权的错误,163邮箱有垃圾邮件的判定,可能会判定所发邮件为垃圾邮件而导致无法发送的问题。

代码:
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 邮件发送工具类
 */
public class SendMailUtil {
/**
 * 邮件发送的方法
 * 
 * @param to 收件人
 * @param subject 主题
 * @param content 内容
 * @param smtp 协议
 * @param host 发送服务器服务器
 * @param sendName 邮件发送人
 * @param sendPort 邮件发送人端口
 * @param userName 邮件发送人名
 * @param userPwd 邮件发送人密码
 * @return 成功或失败
 */
public static boolean send(String to, String subject, String content, String smtp, String host,
        String sendName, String sendPort, String userName, String userPwd) {

    // 第一步:创建Session
    Properties props = new Properties();
    // 指定邮件的传输协议,smtp(Simple Mail Transfer Protocol 简单的邮件传输协议)
    props.put("mail.transport.protocol", smtp);
    // 指定邮件发送服务器服务器 "smtp.qq.com"
    props.put("mail.host", host);
    // 指定邮件的发送人(您用来发送邮件的服务器,比如您的163\sina等邮箱)
    props.put("mail.from", sendName);
    if (true) {
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.put("mail.smtp.socketFactory.port", sendPort);
    }
    Session session = Session.getDefaultInstance(props);

    // 开启调试模式
    session.setDebug(true);
    try {
        // 第二步:获取邮件发送对象
        Transport transport = session.getTransport();
        System.out.println("*****************");
        // 连接邮件服务器,链接您的163、sina邮箱,用户名(不带@163.com,登录邮箱的邮箱账号,不是邮箱地址)、密码
        transport.connect(userName, userPwd);
        System.out.println("----------------------");
        Address toAddress = new  InternetAddress(to);

        // 第三步:创建邮件消息体
        MimeMessage message = new MimeMessage(session);
        //设置自定义发件人昵称
        String nick="饭后一根烟,快活似神仙,吸烟有害健康";
        try {
            nick=javax.mail.internet.MimeUtility.encodeText("我的昵称");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } 
        message.setFrom(new InternetAddress(nick+" <"+sendName+">"));
      //设置发信人
       // message.setFrom(new InternetAddress(sendName));

        // 邮件的主题
        message.setSubject(subject);
        //收件人
        message.addRecipient(Message.RecipientType.TO, toAddress); 
        /*//抄送人
        Address ccAddress = new InternetAddress("[email protected]"); 
        message.addRecipient(Message.RecipientType.CC, ccAddress);*/
        // 邮件的内容
        message.setContent(content, "text/html;charset=utf-8");
        // 邮件发送时间
        message.setSentDate(new Date());

        // 第四步:发送邮件
        // 第一个参数:邮件的消息体
        // 第二个参数:邮件的接收人,多个接收人用逗号隔开([email protected],[email protected])
        transport.sendMessage(message, InternetAddress.parse(to));
        return true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

public static void main(String[] args) {
    // 您要发送给谁,标题,内容
    //SendMailUtil.send("*****@qq.com", "标题", "内容", "smtp", "smtp.qq.com", "发送人名", "端口号", "用户名", "密码");
    //SendMailUtil.send("[email protected]", "邮件标题", "邮件详细内容", "smtp", "smtp.163.com", "邮箱名称带后缀(@qq.com)", "25", "邮箱号(不带后缀)", "邮箱授权码");
    //qq邮箱和163邮箱需要设置pop3和smtp授权,获得授权码,否则报没有授权的错误
    //163邮箱可能会有判定垃圾邮件,无法发送的情况
}

}

你可能感兴趣的:(java邮件发送)