javax.mail发送邮件带附件

废话不多说直接上代码

package test;

import java.io.File;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
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 javax.mail.internet.MimeUtility;

/**
 * 邮件发送工具类
 * 
 * @author yuanhai
 *
 */
public class MailUtils {
    /**
     * 发送邮件的方法
     * 
     * @param to
     *            :收件人
     * @param code
     *            :激活码
     */
    public static void sendMail(String to, String code) {
        /**
         * 1.获得一个Session对象. 2.创建一个代表邮件的对象Message. 3.发送邮件Transport
         */
        // 1.获得连接对象

        // 配置发送邮件的环境属性

        /*
         * 可用的属性: mail.store.protocol / mail.transport.protocol / mail.host /
         * mail.user / mail.from
         */
        final Properties props = new Properties();
        // 表示SMTP发送邮件,需要进行身份验证
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.126.com");

        // 获取session,创建认证器,指定用户名和密码
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("jethai", "密码");
            }
        });

        // 2.创建邮件对象:
        Message message = new MimeMessage(session);

        try {
            message.setFrom(new InternetAddress("[email protected]"));// 设置发件人
            message.addRecipient(RecipientType.TO, new InternetAddress(to));// 设置收件人
            message.addRecipient(RecipientType.CC, new InternetAddress("[email protected]"));// 设置抄送,类型为抄送
            message.addRecipient(RecipientType.BCC, new InternetAddress("[email protected]"));// 设置抄送,类型为密送

            // 设置标题
            message.setSubject("测试邮件");
            // 可以装载多个主体部件!可以把它当成是一个集合
            MimeMultipart partList = new MimeMultipart();
            message.setContent(partList);// 把邮件的内容设置为多部件的集合对象
            // 创建一个部件
            MimeBodyPart part1 = new MimeBodyPart();
            // 给部件指定内容
            part1.setContent("又是一封垃圾邮件", "text/html;charset=utf-8");
            // 部件添加到集合中
            partList.addBodyPart(part1);
            // 又创建一个部件
            MimeBodyPart part2 = new MimeBodyPart();
            // 为部件指定附件
            part2.attachFile(new File("c:/图片.jpg"));
            // 指定附件文件的名字
            // 使用MimeUtility.encodeText()对中文进行编码
            part2.setFileName(MimeUtility.encodeText("大美女.jpg"));

            partList.addBodyPart(part2);

            // 3.发送邮件:
            Transport.send(message);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    // 接受邮箱地址和激活码
    public static void main(String[] args) {
        sendMail("[email protected]", "123456");
    }
}

其中密码换成你发件邮箱密码

所需jar包下载见附件

wKioL1X455-DX6IiAAD3pLiYRqI800.jpg


错误: java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream


原因:javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK中自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入


解决方法:用Java EE 6 Libraries替换javaEE5




参考博文:


http://www.cnblogs.com/xiandedanteng/p/4132201.html


http://blog.163.com/java_star/blog/static/11771480520136511023957/

  



你可能感兴趣的:(javax.mail)