首页 > 编程语言 > 详细

JavaMail实现邮箱之间发送邮件功能

时间:2017-02-23 00:41:16      阅读:321      评论:0      收藏:0      [点我收藏+]
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.springframework.stereotype.Component;


@Component
public class SendmailUtil {
    // 设置服务器
    private static String KEY_SMTP = "mail.smtp.host";
//    private static String VALUE_SMTP = "smtp.163.com";
//    private static String VALUE_SMTP = "smtp.qq.com";
//    private static String VALUE_SMTP = "smtp.exmail.qq.com";
    private static String VALUE_SMTP = "smtp.sina.com.cn";
    // 服务器验证
    private static String KEY_PROPS = "mail.smtp.auth";
    private static boolean VALUE_PROPS = true;
    // 发件人用户名,这里的会与后面的邮箱的后缀相结合,形成邮箱
//    private String SEND_USER = "745874fhsdf";
//    private String SEND_USER = "fsdf988545";
//    private String SEND_USER = "sdfuweor534";
    private String SEND_USER = "385908ewf09";
    //发件人邮箱
//    private String FROMADDRESS=SEND_USER+"@163.com";
//    private String FROMADDRESS=SEND_USER+"@qq.com";
//    private String FROMADDRESS=SEND_USER+"@minstone.com.cn";
    private String FROMADDRESS=SEND_USER+"@sina.com";
    private String SEND_UNAME = "政务服务中心";
    //邮箱密码
//    private String SEND_PWD = "25660663abc.";
//    private String SEND_PWD = "313131abc.";
//    private String SEND_PWD = "25660663Abc.";
    private String SEND_PWD = "25660663abc.";
    
    // 建立会话
    private MimeMessage message;
    private Session s;
 
    /*
     * 初始化方法
     */
    public SendmailUtil() {
        Properties props = System.getProperties();
        // 连接协议
        props.put("mail.transport.protocol", "smtp");
        props.put(KEY_SMTP, VALUE_SMTP);
        props.put(KEY_PROPS, VALUE_PROPS);
        props.put("mail.smtp.ssl.enable", "true");// 设置是否使用ssl安全连接 ---一般都使用
        props.put("mail.debug", "true");// 设置是否显示debug信息 true 会在控制台显示相关信息
        s =  Session.getDefaultInstance(props, new Authenticator(){
              protected PasswordAuthentication getPasswordAuthentication() {
                  return new PasswordAuthentication(SEND_UNAME, SEND_PWD);
              }});
        s.setDebug(true);
        message = new MimeMessage(s);
    }
 
    /**
     * 发送邮件
     * 
     * @param headName
     *            邮件头文件名
     * @param sendHtml
     *            邮件内容
     * @param receiveUser
     *            收件人地址
     */
    public void doSendHtmlEmail(String headName, String sendHtml,
            String receiveUser){
        try {
            // 发件人
            InternetAddress from = new InternetAddress(FROMADDRESS);//发送人地址
            message.setFrom(from);
            // 收件人
            InternetAddress to = new InternetAddress(receiveUser);
            message.setRecipient(Message.RecipientType.TO, to);
            // 邮件标题
            message.setSubject(headName);
            String content = sendHtml.toString();
            // 邮件内容,也可以使纯文本"text/plain"
            message.setContent(content, "text/html;charset=UTF-8");
            message.setSentDate(new Date());
            message.saveChanges();
            Transport transport = s.getTransport("smtp");
            //这里需要注意的是发送的邮箱开通POP3/SMTP/IMAP服务时是否需要授权码,下面的两种的方法其中一种是需要授权码,而另外一种是不需要授权码的
//这种方式应用于163网易邮箱和QQ邮箱,最后一个参数是授权码,网易的授权码可以自动设置,而QQ邮箱的授权码需通过短信才可收到 // transport.connect(FROMADDRESS,"98457frwer"); // transport.connect(FROMADDRESS,"yigoehcqlbxkhfid"); //QQ企业邮箱,新浪邮箱,由于企业QQ邮箱和新浪邮箱开通POP3/SMTP/IMAP服务时,不需要授权码 transport.connect(VALUE_SMTP, FROMADDRESS, SEND_PWD); // 发送 transport.sendMessage(message, message.getAllRecipients()); transport.close(); System.out.println("send success!"); } catch (AddressException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } public static void main(String[] args) { SendmailUtil se = new SendmailUtil(); se.doSendHtmlEmail("邮件标题", "邮件内容", "9847362574@qq.com"); } }

以上例子是JavaMail实现邮箱之间发送邮件功能,需要注意的是发送邮箱是否需要授权码,需要授权码书写的方式和不需要授权码书写的方式不一致,主要区别在

transport.connect方法的参数,而接收邮件的邮箱却不规定,任意邮箱都可以。

JavaMail实现邮箱之间发送邮件功能

原文:http://www.cnblogs.com/xuegu/p/6431323.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!