Latest web development tutorials

جافا إرسال بريد

إرسال عن طريق البريد الالكتروني تطبيقات جافا بسيط جدا، ولكن أولا يجب تثبيت JavaMail API وتفعيل الإطار جافا (الجاف) على جهازك.

  • يمكنك تحميل أحدث إصدار من جافا وJavaMail ، فتح الجانب الأيمن من الصفحة هناك رابط التحميل، اضغط عليها لتحميل.
  • يمكنك تحميل أحدث إصدار من جافا (الإصدار 1.1.1) الجاف .

يمكنك أيضا استخدام الموقع لتقديم رابط التحميل:

تحميل وبفك الملفات في الدليل المستوى الأعلى التي تم إنشاؤها حديثا، وستجد بعض الملفات جرة اثنين من التطبيقات. تحتاج إلى إضافة ملفاتmail.jar وactivation.jarإلى CLASSPATH الخاص بك.

إذا كنت تستخدم خدمة البريد طرف ثالث، مثل الخادم QQ SMTP، يمكنك عرض المقال كاملا في الجزء السفلي من سبيل المثال مصادقة المستخدم.


ببساطة بإرسال بريد الكتروني

هنا مثال بسيط لإرسال البريد الإلكتروني. لنفترض المضيف المحلي متصلا بالفعل إلى الشبكة.

// 文件名 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();
      }
   }
}

ترجمة وتشغيل برنامج لإرسال البريد الإلكتروني بسيط:

$ java SendEmail
Sent message successfully....

إذا كنت ترغب في إرسال البريد الإلكتروني إلى العديد من المستلمين، استخدم الطرق التالية لتحديد متعددة معرف المستفيدين:

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

وفيما يلي وصف المعلمات:

  • نوع: لتكون على النحو لل، CC أو BCC CC هنا بالنيابة عن CC، BCC ممثلين من CC السري ذ مثال: .. Message.RecipientType.TO

  • عناوين: هذا هو معرف البريد الإلكتروني للمجموعة.عند تحديد معرف البريد الإلكتروني، وسوف تحتاج إلى استخدام InternetAddress طريقة ().


إرسال رسالة بريد إلكتروني HTML

هنا هو مثال HTML البريد الإلكتروني المرسلة. لنفترض المضيف المحلي متصلا بالفعل إلى الشبكة.

وأنها مشابهة جدا للمثال السابق، إلا أننا نريد أن استخدام setContent () طريقة لتمرير المعلمة الثانية هو "text / أتش تي أم أل"، لتعيين محتوى ليتم إرسالها إلى تحديد محتوى 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:

$ java SendHTMLEmail
Sent message successfully....

إرسال البريد الإلكتروني مع المرفقات

هنا مثال على البريد الإلكتروني مع مرفق يتم إرسالها. لنفترض المضيف المحلي متصلا بالفعل إلى الشبكة.

// 文件名 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....

قسم مصادقة المستخدم

إذا كنت بحاجة إلى توفير اسم المستخدم وكلمة المرور إلى ملقم البريد الإلكتروني لتحقيق الغرض من مصادقة المستخدم، يمكنك إكمال الإعدادات التالية:

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

البريد الإلكتروني وآليات تسليم أخرى تتفق مع ما ورد أعلاه.

ذلك يتطلب اسم المستخدم كلمة السر الرسائل المصادقة أرسلت مثال:

في خادم البريد سبيل المثال QQ الحالي، على سبيل المثال، تحتاج إلى تسجيل ف ف علبة في الخلفية في "إعدادات" = "حساب مفتوح في خدمة POP3 / SMTP، كما هو مبين أدناه:

ف ف الإلكتروني للتعيين كلمة المرور عن طريق توليد مفتاح الترخيص:

شفرة جافا على النحو التالي:

// 需要用户名密码邮件发送实例
//文件名 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 w3cschool.cc");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}