使用Java发送邮件(javax.mail)

 使用Java发送邮件(javax.mail)
package test;
import java.io.File;
import java.util.Vector;
import java.util.Properties;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.BodyPart;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import javax.activation.DataSource;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeBodyPart;
import javax.activation.FileDataSource;
import javax.activation.DataHandler;
public class SendEMail
{
    /**
     * @param host邮件服务器的地址
     * @param userName 用户名(匿名允许 可以为空)
     * @param password 用户口令(匿名允许 可以为空)
     * @param addressee 收信人
     * @param addresser 发信人
     * @param subject 邮件标题
     * @param contentText 邮件内容
     * files 附件(路径)
     */

    public static void sendEMail(String host,String userName,String password,String addressee,String addresser,String subject,String contentText,Vector files)
    {
        try{
            //创建 properties(里面包含了发送邮件服务器的地址)
            Properties mailProps = new Properties();
            mailProps.setProperty("mail.smtp.host", host);
            //创建Session
            Session mailSession = null;
            if( userName != null && userName.trim().length() > 0 ){
                mailProps.put("mail.smtp.auth","true");
                if(password==null) password=""; //
                mailSession = Session.getInstance(mailProps,new MyAuth(userName,password));
           }else{
               //mailSession = Session.getInstance(mailProps,null);
               mailSession = Session.getDefaultInstance(mailProps);
           }
            //创建message(包含了邮件众多有的部件的对象)
            MimeMessage message = new MimeMessage(mailSession);
            //设置发信人
            message.setFrom(new InternetAddress(addresser));
            //设置收信人( 参数 BCC(blind carbon copy) CC(carbon copy) TO(primary))
            message.setRecipient(Message.RecipientType.TO,new InternetAddress(addressee));
            //设置邮件标题
            message.setSubject(subject);
            //邮件内容(不含有附件)
            if(files == null){
                message.setText(contentText);
            }else{
                //创建 Mimemultipart添加内容(可包含多个附件)
                MimeMultipart multi = new MimeMultipart();
                //MimeBodyPart(用于信件内容/附件)
                BodyPart textBodyPart = new MimeBodyPart();
                textBodyPart.setText(contentText);
                //添加到MimeMultipart对象中
                multi.addBodyPart(textBodyPart);
                //创建FileDAtaSource(用于添加附件)
                for(int j=0; j<files.size(); j++)
                {
                    try{
                        File file = (File)files.elementAt(j);
                        String fname = file.getName();
                        FileDataSource fds = new FileDataSource(file);
                        BodyPart fileBodyPart = new MimeBodyPart();
                        //字符流形式装入文件
                        fileBodyPart.setDataHandler(new DataHandler(fds));
                        fileBodyPart.setFileName("fname");//设置附件文件名
                        multi.addBodyPart(fileBodyPart);
                        message.setContent(multi);
                    }catch(Exception er){
                        er.printStackTrace();
                    }
                }
            }
            //保存改变
            message.saveChanges();
            //发送邮件(Transport类是SMTP的邮件发送协议)
            Transport.send(message);
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }

    //测试/*
    public static void main(String[] args)
    {
        Vector files = new Vector();
        files.addElement(new File("D://Relucent.txt"));
        SendEMail.sendEMail("127.0.0.1",
                        null,
                        null,
                        "redrainyi@test.com",
                        "relucent@test.com",
                        "测试邮件发送",
                        "收到了没有?看看附件",
                        files);
    }//*/
}

package com.email.send; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; 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; public class EmailSender { String protocol ="smtp"; //服务器 String from="*******@qq.com";//寄信人,这里可以改为你的邮箱地址 String to="*******@qq.com";//收信人,改为你要寄给那人的邮箱地址 建议可以用自己的QQ邮箱试试 String subject="Java发送邮件测试!";//邮件主题 String body="<a href=http://www.qq.com>qq.com" + "</a><br><img src=\"cid:8.jpg\">";//邮件内容 这是一个HTTP网页类的邮件内容 public static void main(String []args)throws Exception{ String server ="smtp.qq.com";//QQ邮箱的服务器,例如新浪邮箱或者其他服务器可以自己去查,这里用QQ邮箱为例 String user="******@qq.com";//登录邮箱的用户,不如说你用QQ邮箱,那就写你登录QQ邮箱的帐号 String pass="*******";//登录密码 EmailSender sender=new EmailSender(); Session session= sender.createSession(); MimeMessage message=sender.createMessage(session); System.out.println("正在发送邮件..."); Transport transport=session.getTransport(); transport.connect(server,user,pass); transport.sendMessage(message,message.getRecipients(Message.RecipientType.TO)); transport.close(); System.out.println("发送成功!!!"); } public Session createSession(){ Properties props=new Properties(); props.setProperty("mail.transport.protocol", protocol); props.setProperty("mail.smtp.auth","true"); Session session=Session.getInstance(props); // session.setDebug(true); return session; } public MimeMessage createMessage(Session session)throws Exception{ MimeMessage message=new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); MimeMultipart multipart=new MimeMultipart("related"); MimeBodyPart bodyPart=new MimeBodyPart(); bodyPart.setContent(body,"text/html;charset=gb2312"); multipart.addBodyPart(bodyPart); //发附件 MimeBodyPart gifBodyPart=new MimeBodyPart(); FileDataSource fds=new FileDataSource("f:\\音乐.MP3");//F盘下的 音乐.MP3 文件。这里看个人情况 gifBodyPart.setDataHandler(new DataHandler(fds)); gifBodyPart.setContentID("音乐.MP3"); multipart.addBodyPart(gifBodyPart); message.setContent(multipart); message.saveChanges(); return message; } } //PS:把java发送邮件的导入的JAR包上传了,解压后导入你的项目里就可
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值