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


    package com.minstone.message.util;
    
    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 = "abc25660663";
    //    private String SEND_USER = "1481596361";
    //    private String SEND_USER = "hongxy";
        private String SEND_USER = "mingdong123abc";
        //发件人邮箱
    //    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 = "mingdong123abc";
        
        // 建立会话
        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, "true");//true一定要加双引号
            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");
                //这种方式应用于163网易邮箱和QQ邮箱,最后一个参数是授权码,网易的授权码可以自动设置,而QQ邮箱的授权码需通过短信才可收到
    //            transport.connect(FROMADDRESS,"25660663abc");
    //            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("邮件标题1111", "邮件内容", "1481596361@qq.com");
        }
    }

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

    transport.connect方法的参数,而接收邮件的邮箱却不规定,任意邮箱都可以。
    需要导入一些包:

    具体根据自身的情况进行导入,一般来说mail.jar或者javax.mail.jar和activation.jar需导入
  • 相关阅读:
    HDU 4990 Reading comprehension(BestCoder Round #8)
    HDU 4985 Little Pony and Permutation(BestCoder Round #7)
    HDU 4983 Goffi and GCD(欧拉函数模板)
    CodeForces 590A Median Smoothing
    CodeForces 591B Rebranding
    LightOJ 1100
    Load average 负载详细解释
    Loadrunner 上传下载
    使用VisualVM远程监控JVM Linux服务器配置方法
    JVM调优(7)调优方法
  • 原文地址:https://www.cnblogs.com/xuegu/p/6431323.html
Copyright © 2020-2023  润新知