javamail操作一

javamail操作一
     使用之前,必须了解的基本概念与核心类: Session 是邮件操作的接口; Transport 是收发邮件所
使用的协议,一般 Session 会有多个 Transport Message 是收发操作的单位; Store 是消息的集合,类
似邮件客户端。每个 Store 包含一系列的 Folder Message ,每个 Folder 又包含一系列的 Folder Message
Session 需要使用 java,mail.util.Properties 来构造,常用的用来构造 Session 的属性:
属性名
含义
java,mail.smtp.user
SMTP 的缺省用户名。
java,mail.smtp.host
要连接的 SMTP 服务器。
java,mail.smtp.port
要连接的 SMTP 服务器的端口号,如果 connect 没有指明端口号就使用它,缺省值 25
java,mail.smtp.connectiontimeout
Socket 连接超时值,单位毫秒,缺省值不超时。
java,mail.smtp.timeout
Socket I/O 超时值,单位毫秒,缺省值不超时。
java,mail.smtp.from
SMTP java,mail 使用的 Email 地址,用来设置邮件的 return 地址。缺省是 Message.getFrom() InternetAddress.getLocalAddress() 。注意: java,mail.smtp.user 优先使用
java,mail.smtp.localhost
localhost 名,缺省是 InetAddress.getLocalHost().getHostName() 。如果 JDK name service 正确配置,一般不需设置。
java,mail.smtp.ehlo
如果为 false ,那么不会尝试使用 EHLO 命令登录,缺省是 true 。通常 EHLO 命令失败,会倒退到 HELO 命令。这个属性只有在服务器没有 fail EHLO 属性或没有实现 EHLO 属性。
java,mail.smtp.auth
缺省是 false ,如果为 true ,尝试使用 AUTH 命令认证用户。
java,mail.host
邮件交互的主机。
java,mail.transport.protocol
要装入 session 的协议( smtp pop3 imap nntp )。
java,mail.user
登录邮件服务器的用户名(发送邮件时需要)。
java,mail.from
发件人地址(发送邮件时需要)。
发送邮件
    发送邮件主要涉及的类包括:Session、Transport和MimeMessage。如果发送带附件的邮件还会
涉及:MimeMultipart、DataSource和DataHandler。注意:以下的示例代码不带异常处理。
-          发送不带附件的邮件:
Properties props= new Properties();
// 如果使用 connect 包含用户名和密码
// 仍然连接不上,那么有可能是这个属性没有设置。
// 导致服务器不验证
props.put("mail.smtp.auth", "true");
// 也可实现一个自定义的 Authenticator ,并调用
//getDefaultInstance(java.util.Properties props, Authenticator authenticator)
// 来完成验证。个人觉得不如使用 connect 方便。
Transport transport= session.getTransport("smtp");
MimeMessage message= new MimeMessage( session);
InternetAddress from= new InternetAddress( "James.Hu@chinacodeline.com", "James.Hu");
message.setFrom( from);
InternetAddress to= new InternetAddress("foxgem_magic@yahoo.com.cn");
// 指定收件人的类型
message.setRecipient( MimeMessage.RecipientType.TO, to);
message.setSubject( "This is a test.");
// 文本内容,就直接使用这个函数。
// 如果内容不是纯文本,那么使用 setContent 指定 mime type
message.setText( " 检查文件 ");
// 加上这句话表示邮件完成
message.saveChanges();
// 连接并验证
transport.connect("mail.chinacodeline.com", "james.hu@chinacodeline.com", " 密码 ");
transport.sendMessage( message, message.getAllRecipients());
transport.close();
props.put("mail.smtp.auth", "true"); Session session= Session.getDefaultInstance( props);
-          发送带附件的邮件:
Properties props= new Properties();
props.put("mail.smtp.auth", "true");
Session session= Session.getDefaultInstance( props);
Transport transport= session.getTransport("smtp");
MimeMessage msg= new MimeMessage( session);
msg.setFrom( new InternetAddress( "james.hu@chinacodeline.com", "foxgem"));
msg.setRecipient( MimeMessage.RecipientType.TO
              , new InternetAddress("foxgem_magic@yahoo.com.cn"));
msg.setSubject("mail with single file");
// 把邮件内容看作多个组成部分,每部分分别组织自己的内容。最后
// 通过这个类组合起来一起发出。
MimeMultipart content= new MimeMultipart();
MimeBodyPart part1= new MimeBodyPart();
part1.setText("pls check the file");
MimeBodyPart part2= new MimeBodyPart();
// 附件如果是文件,一般都是使用 FileDataSource
// 如果是从其他方面获得,那么使用对应的 DataSource
// 如,若是来自 url ,那么就使用 URLDataSource
DataHandler dh= new DataHandler( fileDs);
part2.setDataHandler( dh);
// 标记为附件,否则当邮件客户端(如 OE )收到后,直接在邮件中显示内容。
part2.setDisposition( MimeBodyPart.ATTACHMENT);
// 设置附件的文件名
part2.setFileName( "test.txt");
content.addBodyPart( part1);
content.addBodyPart( part2);
msg.setContent( content);
msg.saveChanges();
transport.connect("mail.chinacodeline.com", "james.hu@chinacodeline.com", " 密码 ");
transport.sendMessage( msg, msg.getAllRecipients());
transport.close();
DataSource fileDs= new FileDataSource( "d:/test.txt");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值