zoukankan      html  css  js  c++  java
  • 用JavaMail写发送邮件程序

    参加开发过各种各样的Web应用,经常会遇到Web应用需要嵌入邮件功能。例如,如果是EC应用的话,顾客下单后会收到下单确认邮件,而商品提供者会收到有新订单需要处理的邮件,这样商品提供者就不必定期的访问自己的网站或数据库也能够处理订单,而顾客也不必记下下单时填写的内容。或者还有,有新品上市时,通过邮件给希望收到最新信息的老顾客发送商品介绍和各种促销活动等。

    一般来说,通过Pull型浏览器(能自动收集信息)和Push型邮件系统(信息提供者积极提供信息)的协同,可以给用户带来更好的用户体验,对网站经营者也可以提供非常有利的解决方案。

    在本文中,就是要介绍能够简单实现这种邮件系统的Java类库--JavaMail。利用JavaMail,不用考虑SMTP这种底层的通信实现,只要设定相关参数就可实现发送邮件。

    在这里,只是先用固定文本信息来尝试,当然你可以编辑必要的参数,从数据库获取数据等,来实现动态的发送邮件功能。

    下面通过具体代码来了解。

    1. 安装JavaMail类库

    要利用JavaMail类库,除了JavaMail自身,还需要JAF(Java Activation Framework),Java6以后的版本不需要JAF。可以从下面的地址获取这些。

    http://www.oracle.com/technetwork/java/javamail/index-138643.html

    下载后解压,将lib下的类库添加到你的Classpath。

    2. Java程序

    MailTransfer.java

     1 import java.io.UnsupportedEncodingException;
     2 import java.util.Properties;
     3 
     4 import javax.mail.Message;
     5 import javax.mail.MessagingException;
     6 import javax.mail.Session;
     7 import javax.mail.Transport;
     8 import javax.mail.internet.InternetAddress;
     9 import javax.mail.internet.MimeMessage;
    10  
    11 
    12 public class MailTransfer {
    13   public static void main(String[] args) {
    14     Properties objPrp=new Properties();
    15     objPrp.put("mail.smtp.host","smtp.xxxxx.ne.jp"); // SMTP Server
    16     objPrp.put("mail.host","smtp.xxxxx.ne.jp"); // Host
    17     // Mail Session
    18     Session session=Session.getDefaultInstance(objPrp,null);
    19     // Sending Message
    20     MimeMessage objMsg=new MimeMessage(session);
    21     try {
    22       // To (还可以设定其他CC或BCC)
    23       objMsg.setRecipients(Message.RecipientType.TO,"xxxxxx@hotmail.com");
    24       // From
    25       InternetAddress objFrm=new InternetAddress("xxxxxx@gmail.com","E.Kou");
    26 
    27       objMsg.setFrom(objFrm);
    28       // 标题
    29       objMsg.setSubject("Mail Test","utf-8");
    30        
    31       // 邮件内容
    32       objMsg.setText("Hello","utf-8");
    33       
    34       // 发送邮件
    35       Transport.send(objMsg); 
    36     } catch (UnsupportedEncodingException e) {
    37       e.printStackTrace();
    38     } catch (MessagingException e) {
    39       e.printStackTrace();
    40     } 
    41   }
    42 }

    这个例子是从gmail向hotmail发送一封名为Mail Test的邮件。

    3. 需要注意的地方

    ①发送中文邮件时要注意编码

    这里用的是utf-8

    ②mail.host和mail.smtp.host都要指定

    因为Java会先识别mail.smtp.host,所以只指定mail.smtp.host也可以。但是Message-ID是利用mail.host生成的,所以如果不指定mail.host,可能会影响Message-ID的生成。

  • 相关阅读:
    Android ArrayAdapter使用
    Android 更改字体
    C# CRC16校验码 1.0
    获取当前主题颜色 Flutter
    C# 每个字节接受 处理串口数据 的方法
    C# CRC
    char* 与 string 互转
    typeof 子类获取父类
    flutter Row 垂直或水平放置多个widget
    flutter 容器 几种写法
  • 原文地址:https://www.cnblogs.com/kouen/p/3110035.html
Copyright © 2011-2022 走看看