• [Java] JavaMail 发送 html 格式、带附件的邮件


    本案例演示发送 html 格式,可带附件的邮件发送。发送纯文本邮件的例子可参照上一篇博文JavaMail 简单案例

    EmailHelper, Email 的帮助类,向帮助类提供 SMTP 服务器域名、用户名、密码、发送人邮箱、收件人邮箱、邮件主题、html 格式的内容(可选)、附件(可选),便可发送一份邮件。

    SendEmailDemo, 演示发送邮件。

    import java.util.Properties;
    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.activation.FileDataSource;
    import javax.mail.BodyPart;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Multipart;
    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.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    
    public class EmailHelper {
        
        private String host;
        private String username;
        private String password;
        private String from;
        
        private String to;
        private String subject;
        private String htmlContent;
        private String attachedFileName;
        
        public EmailHelper(String host, String username, String password, String from) throws AddressException, MessagingException{
            this.host = host;
            this.username = username;
            this.password = password;
            this.from = from;
        }
        
        public void send() throws Exception{
            
            Properties props = new Properties();
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.host", host);
            
            final String username1 = username;
            final String password1 = password;
            
            Session session = Session.getInstance(props, 
                    new javax.mail.Authenticator(){
                 protected PasswordAuthentication getPasswordAuthentication() {
                       return new PasswordAuthentication(username1, password1);
               }
            });        
            
            Message message = new MimeMessage(session);
            
            
            message.setFrom(new InternetAddress(from));        
            
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            
            message.setSubject(subject);
    
            
            Multipart multipart = new MimeMultipart();
            
            if (htmlContent != null){
                System.out.println(" has html ");
    
                BodyPart htmlPart = new MimeBodyPart();
                htmlPart.setContent(htmlContent, "text/html");
                multipart.addBodyPart(htmlPart);
            }
            
            if (attachedFileName != null){
                System.out.println(" has attached file ");
    
                BodyPart attchmentPart = new MimeBodyPart();
                DataSource source = new FileDataSource(attachedFileName);
                attchmentPart.setDataHandler(new DataHandler(source));
                attchmentPart.setFileName(attachedFileName);
                multipart.addBodyPart(attchmentPart);
            }
            
            message.setContent(multipart);
            Transport.send(message);
    
            System.out.println(" Sent ");
        }
    
        public void setTo(String to) {
            this.to = to;
        }
    
        public void setSubject(String subject) {
            this.subject = subject;
        }
    
        public void setHtmlContent(String htmlContent) {
            this.htmlContent = htmlContent;
        }
        
        public void setAttachedFileName(String attachedFileName) {
            this.attachedFileName = attachedFileName;
        }
    }

    演示代码,

    public class SendEmailDemo {
        
        public static void main(){
            
            String host = "smtp.163.com";        // use your smtp server host
    
            final String username = "sender@163.com"; // use your username
            final String password = "password";   // use your password
    
            String from = "sender@163.com";     // use your sender email address
    
            String to = "reciever@foxmail.com";  // use your reciever email address
            try {
                EmailHelper emailHelper = new EmailHelper(host, username, password, from);
                emailHelper.setTo(to);
                emailHelper.setSubject("subject ttt test");
                emailHelper.setHtmlContent("<h1> This is html </h1>");
                emailHelper.setAttachedFileName("/Users/grs/Documents/Java/mavenEmail/test/src/main/resource/attachment3.txt");
                
                emailHelper.send();
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    需要读取邮箱邮件,可参考另一篇博文 JavaMail 查询邮件

    参考资料

    Java - Sending Email

  • 相关阅读:
    关于m3u8格式的视频文件ts转mp4下载和key加密问题
    Flask報錯 KeyError 'SQLALCHEMY_TRACK_MODIFICATIONS'.md
    ajax post data 获取不到数据,注意 content-type的设置 、post/get(转)
    Ajax 的一些概念 解析
    Apache2 服务配置 ubuntu16.04 + django1.11
    GitHub 远程仓库 de 第一次配置
    Django自带后台admin的使用配置
    每次启动虚拟机都要重置网卡设置,否则无法上网,很烦
    pip崩了, 解决 ModuleNotFoundError: No module named 'pip'.
    vue proxyTable
  • 原文地址:https://www.cnblogs.com/TonyYPZhang/p/5592653.html
Copyright © 2020-2023  润新知