Javaの入門 - 高度なチュートリアル - 06.メールが

オリジナル住所:http://www.work100.net/training/java-email.html
その他のチュートリアル:ビーム雲-無料講座

郵便

いいえ。 記事のセクション ビデオ
1 アウトライン
2 簡単な電子メールを送ります
3 HTML形式の電子メールを送信します
4 添付ファイル付きのメールを送信します
5 ユーザー認証

上記をご参照ください章节导航読み取るために

1.概要

JavaのEメールを使用して送信するアプリケーションは非常にシンプルですが、まず、あなたのマシンにインストールする必要がありますJavaMail APIし、Java Activation FrameworkJAF)。

  • あなたはからのJavaの最新バージョンをダウンロードすることができJavaMailているページの開放側Downloads、リンクをダウンロードし、それをクリックしてください

  • あなたは、JavaのWebサイトから最新版をダウンロードすることができますJAF(バージョン1.1.1)

また、ダウンロードリンクを提供するサイトを使用することができます。

  • JavaMailの mail.jar 1.4.5

  • JAF(バージョン1.1.1)activation.jar

新しく作成されたトップレベルのディレクトリ内のファイル解凍し、あなたは、これらのアプリケーションの一部をダウンロードしていますjarファイルを。あなたは必要mail.jaractivation.jarあなたにファイルを追加CLASSPATH真ん中。

あなたのようなサードパーティのメールサーバーを使用する場合は、サーバー、あなたは記事の下部完全なユーザー認証インスタンスを表示することができます。QQSMTP

迅速なメールを送信2.

以下は、単純なトランスミッションであるE-mail場合。ローカルホストが既にネットワークに接続されていると仮定します。

// 文件名 SendEmail.java
 
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendEmail
{
   public static void main(String [] args)
   {   
      // 收件人电子邮箱
      String to = "[email protected]";
 
      // 发件人电子邮箱
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // 获取系统属性
      Properties properties = System.getProperties();
 
      // 设置邮件服务器
      properties.setProperty("mail.smtp.host", host);
 
      // 获取默认session对象
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // 创建默认的 MimeMessage 对象
         MimeMessage message = new MimeMessage(session);
 
         // Set From: 头部头字段
         message.setFrom(new InternetAddress(from));
 
         // Set To: 头部头字段
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: 头部头字段
         message.setSubject("This is the Subject Line!");
 
         // 设置消息体
         message.setText("This is actual message");
 
         // 发送消息
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

コンパイルとは、単純なを送信するために、プログラムを実行しますE-mail

$ java SendEmail
Sent message successfully....

あなたが1を送信する場合はE-mail複数の受信者に、複数指定するには、次のメソッドを使用します收件人ID

void addRecipients(Message.RecipientType type,
                   Address[] addresses)
throws MessagingException

以下はパラメータの説明です:

  • タイプの設定する:TOCCまたはBCCCCCCの代表者、BCC秘密のccの代わりに。例えば:Message.RecipientType.TO

  • 住所:これはemail ID配列。電子メールIDを指定するときは、使用する必要がありますInternetAddress()方法を。

3.は、HTML形式の電子メールを送信します

以下は、送信であるHTML E-mail例。ローカルホストが既にネットワークに接続されていると仮定します。

そして、それは前の例と似ているが、我々が使用することを除いてsetContent()第二引数を経由しての方法は、「あるtext/html」、コンテンツを指定するために送信されるように設定されているHTMLコンテンツを。

// 文件名 SendHTMLEmail.java
 
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendHTMLEmail
{
   public static void main(String [] args)
   {
     
      // 收件人电子邮箱
      String to = "[email protected]";
 
      // 发件人电子邮箱
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // 获取系统属性
      Properties properties = System.getProperties();
 
      // 设置邮件服务器
      properties.setProperty("mail.smtp.host", host);
 
      // 获取默认的 Session 对象。
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // 创建默认的 MimeMessage 对象。
         MimeMessage message = new MimeMessage(session);
 
         // Set From: 头部头字段
         message.setFrom(new InternetAddress(from));
 
         // Set To: 头部头字段
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: 头字段
         message.setSubject("This is the Subject Line!");
 
         // 发送 HTML 消息, 可以插入html标签
         message.setContent("<h1>This is actual message</h1>",
                            "text/html" );
 
         // 发送消息
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

コンパイルとは、送信するために、このプログラムを実行しますHTML e-mail

$ java SendHTMLEmail
Sent message successfully....

添付ファイル付きのメールを送信します

添付ファイル付き4. Eメール

以下に、添付の伝送であるE-mail例。ローカルホストが既にネットワークに接続されていると仮定します。

// 文件名 SendFileEmail.java
 
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendFileEmail
{
   public static void main(String [] args)
   {
     
      // 收件人电子邮箱
      String to = "[email protected]";
 
      // 发件人电子邮箱
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 localhost
      String host = "localhost";
 
      // 获取系统属性
      Properties properties = System.getProperties();
 
      // 设置邮件服务器
      properties.setProperty("mail.smtp.host", host);
 
      // 获取默认的 Session 对象。
      Session session = Session.getDefaultInstance(properties);
 
      try{
         // 创建默认的 MimeMessage 对象。
         MimeMessage message = new MimeMessage(session);
 
         // Set From: 头部头字段
         message.setFrom(new InternetAddress(from));
 
         // Set To: 头部头字段
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: 头字段
         message.setSubject("This is the Subject Line!");
 
         // 创建消息部分
         BodyPart messageBodyPart = new MimeBodyPart();
 
         // 消息
         messageBodyPart.setText("This is message body");
        
         // 创建多重消息
         Multipart multipart = new MimeMultipart();
 
         // 设置文本消息部分
         multipart.addBodyPart(messageBodyPart);
 
         // 附件部分
         messageBodyPart = new MimeBodyPart();
         String filename = "file.txt";
         DataSource source = new FileDataSource(filename);
         messageBodyPart.setDataHandler(new DataHandler(source));
         messageBodyPart.setFileName(filename);
         multipart.addBodyPart(messageBodyPart);
 
         // 发送完整消息
         message.setContent(multipart );
 
         //   发送消息
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

コンパイルし、添付ファイルを電子メールで送信するようにプログラムを実行します。

$ java SendFileEmail
Sent message successfully....

5.ユーザー認証

あなたは、ユーザー名とパスワードを提供する必要がある場合はe-mail、ユーザ認証を実現するために、宛先サーバーは、次の設定によってそうすることができます。

props.put("mail.smtp.auth", "true");
props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");

電子メールやその他の伝送メカニズム一貫言いました。

ユーザ名・パスワードの認証メッセージを要求する例を送りました。

QQメールサーバーにこの例では、たとえば、あなたがバックグラウンドでQQのメールボックスをログに記録する必要がある设置=「账号=」オープンPOP3/SMTPの下に示すように、サービス:

セット認証コードへのQQメールのパスワード:

次のようにJavaコードは次のとおりです。

// 需要用户名密码邮件发送实例
//文件名 SendEmail2.java
//本实例以QQ邮箱为例,你需要在qq后台设置
 
import java.util.Properties;
 
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 
public class SendEmail2
{
   public static void main(String [] args)
   {
      // 收件人电子邮箱
      String to = "[email protected]";
 
      // 发件人电子邮箱
      String from = "[email protected]";
 
      // 指定发送邮件的主机为 smtp.qq.com
      String host = "smtp.qq.com";  //QQ 邮件服务器
 
      // 获取系统属性
      Properties properties = System.getProperties();
 
      // 设置邮件服务器
      properties.setProperty("mail.smtp.host", host);
 
      properties.put("mail.smtp.auth", "true");
      // 获取默认session对象
      Session session = Session.getDefaultInstance(properties,new Authenticator(){
        public PasswordAuthentication getPasswordAuthentication()
        {
         return new PasswordAuthentication("[email protected]", "qq邮箱授权码"); //发件人邮件用户名、授权码
        }
       });
 
      try{
         // 创建默认的 MimeMessage 对象
         MimeMessage message = new MimeMessage(session);
 
         // Set From: 头部头字段
         message.setFrom(new InternetAddress(from));
 
         // Set To: 头部头字段
         message.addRecipient(Message.RecipientType.TO,
                                  new InternetAddress(to));
 
         // Set Subject: 头部头字段
         message.setSubject("This is the Subject Line!");
 
         // 设置消息体
         message.setText("This is actual message");
 
         // 发送消息
         Transport.send(message);
         System.out.println("Sent message successfully....from runoob.com");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

SSL暗号化を設定します

QQ邮箱だけでなく、我々はセットアップSSLに次のコードを追加し、暗号化を

コードは以下の通りであります:

MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);

リファレンスコードを完了します。

import java.security.GeneralSecurityException;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;

public class SendEmail 
{
    public static void main(String [] args) throws GeneralSecurityException 
    {
        // 收件人电子邮箱
        String to = "[email protected]";

        // 发件人电子邮箱
        String from = "[email protected]";

        // 指定发送邮件的主机为 smtp.qq.com
        String host = "smtp.qq.com";  //QQ 邮件服务器

        // 获取系统属性
        Properties properties = System.getProperties();

        // 设置邮件服务器
        properties.setProperty("mail.smtp.host", host);

        properties.put("mail.smtp.auth", "true");
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.enable", "true");
        properties.put("mail.smtp.ssl.socketFactory", sf);
        // 获取默认session对象
        Session session = Session.getDefaultInstance(properties,new Authenticator(){
            public PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication("[email protected]", "授权的 QQ 邮箱密码"); //发件人邮件用户名、密码
            }
        });

        try{
            // 创建默认的 MimeMessage 对象
            MimeMessage message = new MimeMessage(session);

            // Set From: 头部头字段
            message.setFrom(new InternetAddress(from));

            // Set To: 头部头字段
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

            // Set Subject: 头部头字段
            message.setSubject("This is the Subject Line!");

            // 设置消息体
            message.setText("This is actual message");

            // 发送消息
            Transport.send(message);
            System.out.println("Sent message successfully....from runoob.com");
        }catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

前:ネットワークプログラミング

次へ:マルチスレッド

おすすめ

転載: www.cnblogs.com/liuxiaojun/p/training-java-email.html
おすすめ