使用java Mail发送邮件,携带网络附件和本地附件

package email;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.net.URL;
import java.util.Properties;

/**
 * 读取本地文件为附件
 */
public class EmailTest1 {
    private static final String MAIL_IMAP_STARTTLS_ENABLE = "mail.imap.starttls.enable";
    private static final String MAIL_SMTP_STARTTLS_ENABLE = "mail.smtp.starttls.enable";
    private static final String MAIL_SMTP_SSL_TRUST = "mail.smtp.ssl.trust";

    public static void main(String[] args) throws Exception {
        String host = "smtp.163.com"; //163的host,其他的自己去百度
        String username = "[email protected]";//邮箱地址,就是你申请的邮箱账号
        String password = "123456";//邮箱密码
        Properties props = System.getProperties();
        //设置用户的认证方式
        props.setProperty("mail.smtp.auth", "true");
        //设置传输协议
        props.setProperty("mail.transport.protocol", "smtp");
        //设置发件人的SMTP服务器地址
        props.setProperty("mail.smtp.host", host);
        //端口
        props.setProperty("mail.smtp.port", "465");
        //debug,一般不配置这个参数,调试的时候用
        props.setProperty("mail.debug", "true");
        //使用ssl需要加如下参数
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        Session session = Session.getInstance(props, null);
        //附件处理
        Multipart multipart = new MimeMultipart();
        MimeBodyPart messageBodyPart1 = new MimeBodyPart();
        String content = "abcdefg";
        //正文,可以是html文档
        messageBodyPart1.setContent(content, "text/html;charset=utf-8");
        multipart.addBodyPart(messageBodyPart1);
        MimeBodyPart messageBodyPart2 = new MimeBodyPart();

        //邮件中包含本地附件
        String path = "F:\\fff.docx";
        // 1、得到数据源
        FileDataSource fds = new FileDataSource(path);
        // 2、得到附件本身并至入BodyPart
        messageBodyPart2.setDataHandler(new DataHandler(fds));
        //3、设置附件名
        messageBodyPart2.setFileName("fff.docx");
        multipart.addBodyPart(messageBodyPart2);

        //邮件中包含网络附件
        String path2 = "http://www.pptbz.com/pptpic/UploadFiles_6909/201203/2012031220134655.jpg";
        URL url = new URL(path2);
        DataHandler dataHandler = new DataHandler(url);
        MimeBodyPart messageBodyPart3 = new MimeBodyPart();
        messageBodyPart3.setDataHandler(dataHandler);
        messageBodyPart3.setFileName("2012031220134655.jpg");
        multipart.addBodyPart(messageBodyPart3);

        MimeMessage replyMessage = new MimeMessage(session);
        //发件箱,大部分与邮箱账号一致
        InternetAddress mailFrom = new InternetAddress("[email protected]");
        //收件箱,有一段时间申请的QQ邮箱好像默认关闭了 pop3和smtp,所以qq邮箱可能会收不到邮件
        InternetAddress mailTo = new InternetAddress("[email protected]");
        replyMessage.setFrom(mailFrom);
        replyMessage.setContent(multipart);
//        replyMessage.setContent("简单的纯文本邮件!", "text/html;charset=UTF-8");
        replyMessage.setSubject("mail test test test");
        replyMessage.setReplyTo(new Address[]{mailFrom});
        replyMessage.setRecipient(javax.mail.Message.RecipientType.TO, mailTo);
        replyMessage.setSender(mailFrom);
        Transport transport = session.getTransport("smtp");
        try {
            transport.connect(host, username, password);
            //发送邮件
            transport.sendMessage(replyMessage, new Address[]{mailTo});
        } catch (Exception e) {

        } finally {
            transport.close();
        }
        System.out.println("success");
    }
}

maven 依赖

          <dependency>
3             <groupId>javax.mail</groupId>
4             <artifactId>mail</artifactId>
5             <version>1.4.4</version>
6         </dependency>

猜你喜欢

转载自www.cnblogs.com/blackl/p/10544571.html