JavaMail实现收发邮件——(二)发送邮件

简介:

一.导入jar包:

    将mail.jar和activation.jar导入到项目中(eclipse中:点击项目名,鼠标右键-->Build Path-->Configure Build Path-->Libraries-->Add External JARs)

注:以上是针对JavaSE的环境,如果是JavaEE环境则不需要,j2ee.jar中包含了上述两个依赖包,可以直接使用。


二.邮件发送关键代码


(1)新建Properties属性对象

1
2
3
Properties properties =  new  Properties();
properties.put( "mail.smtp.host" , smtpServer);
properties.put( "mail.smtp.auth" "true" );


(2)获取Session会话:

1
2
Session session = Session.getInstance(properties);
//session.setDebug(true);


(3)创建Message消息对象以及相关配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
MimeMessage message =  new  MimeMessage(session);
 
try  {
     //发件人
     Address address =  new  InternetAddress(from);
     message.setFrom(address);
 
     //收件人
     for (String toAd : to){
     Address toAddress =  new  InternetAddress(toAd);
     message.setRecipient(MimeMessage.RecipientType.TO, toAddress);   //设置收件人,并设置其接收类型为TO
     /**
      * TO:代表有健的主要接收者。
      * CC:代表有健的抄送接收者。
      * BCC:代表邮件的暗送接收者。
      * */
     }
 
     //主题
     message.setSubject(changeEncode(subject));
 
     //时间
     message.setSentDate( new  Date());
 
     Multipart multipart =  new  MimeMultipart();
     
     //添加文本
     BodyPart text =  new  MimeBodyPart();
     text.setText(content);
     multipart.addBodyPart(text);
     
     //添加附件
     for (String fileName : attachmentNames){
         BodyPart adjunct =  new  MimeBodyPart();
     FileDataSource fileDataSource =  new  FileDataSource(fileName);
     adjunct.setDataHandler( new  DataHandler(fileDataSource));
     adjunct.setFileName(changeEncode(fileDataSource.getName()));
     multipart.addBodyPart(adjunct);
     }
     
     //清空收件人集合,附件集合
     to.clear();
     attachmentNames.clear();
 
     message.setContent(multipart);     
     message.saveChanges();     
     catch  (Exception e) {
     e.printStackTrace();
     return  false ;         
     }

注:1.这里的收件人to是一个String集合,以实现群发目的

    2.里面有返回值是因为我把发送邮件的代码放在了public boolean sendMail(){}中,通过返回值判断是否已发送成功。下面我会把完整代码放在附件中供大家参考


(4)用Session会话得到Transport对象以及发送邮件

1
2
3
4
5
6
7
8
9
10
11
try  {
     Transport transport = session.getTransport( "smtp" );
     //用SMTP服务器地址以及用户名和密码连接SMTP服务器
     transport.connect(smtpServer,username,password);
     //发送邮件
     transport.sendMessage(message, message.getAllRecipients());
     transport.close();         
catch  (Exception e) {    
     e.printStackTrace();
     return  false ;
     }


三.测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public  static  void  main(String[] args) {
     SendMail sendMail =  new  SendMail();
     sendMail.setSmtpServer( "smtp.qq.com" );
     sendMail.setUsername( "youname@qq.com" );
     sendMail.setPassword( "youpassword" );
     sendMail.setFrom( "123456@qq.com" );
     sendMail.addTo( "654321@qq.com" );
//  sendMail.addTo("123456789@qq.com");
     sendMail.setSubject( "邮件标题测试" );
     sendMail.setContent( "Hi,JavaMail.\n你好" );
//  sendMail.addAttachmentNames("C:\\Users\\Administrator\\Desktop\\JavaMail
使用参考.txt");
     sendMail.addAttachmentNames( "C:/Users/Administrator/Desktop/测试.txt" );
//  sendMail.addAttachmentNames("C:/Users/Administrator/Desktop/加密与解
密.pdf");
     if (sendMail.sendMail()){
     System.out.println( "邮件发送成功" );
     }
}




本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1662943,如需转载请自行联系原作者
相关文章
|
30天前
|
数据安全/隐私保护
JavaMail给QQ邮箱发邮件报错
JavaMail给QQ邮箱发邮件报错
11 0
|
数据安全/隐私保护
使用MailUtils发送邮件
使用MailUtils发送邮件
|
Java 数据安全/隐私保护
springboot发邮件,javaxmail收邮件功能
springboot发邮件,javaxmail收邮件功能
214 0
阿里云如何添加邮箱解析来实现收发邮件服务
当你买域名后,要在阿里云添加邮箱解析,邮箱解析是把域名指向邮箱的服务器地址,实现邮箱的收发邮件服务。一、联系邮箱提供商,获取邮箱解析记录,这部分数据一般在邮箱提供商帮助文档里有,要么就和客服索要。二、添加解析操作步骤 1、联系邮箱提供商,获取邮箱解析地址记录。
|
移动开发 C++
用C++发邮件
近段时间,实验室电脑的IP频繁地改变,搞得想用远程偷下懒都不行。这时想到的解决方法有:静态IP,动态域名,自己解决。静态IP虽然可以自己指定,但一关机后,与对方冲突就完了,作罢。免费的动态域名又要手机认证,也作罢。
1394 0
|
存储 Java Spring
发送邮件那些事
邮件历史 世界的第一封电子邮件 1969年10月世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短消息。 据《互联网周刊》报道世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短消息(时间应该是1969年10月),这条消息只有两个字母:"LO"。
2495 0