javamail,javamail發送郵件使用協議

本文目錄一覽:

javamail客戶端需要開25埠么

不需要。

根據博客數據顯示,Javamail將始終使用原始測試電子郵件的埠不需要25埠。

JavaMail,顧名思義,提供給開發者處理電子郵件相關的編程介面。它是Sun發布的用來處理email的API。

怎麼用javamail 通過http代理髮郵件

代碼如下:

import java.util.Properties;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.Message.RecipientType;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

public class EmailTest {

public static void main(String[] args) throws Exception{

Properties props = new Properties();

props.setProperty(“mail.smtp.auth”, “true”);

props.setProperty(“mail.transport.protocol”, “smtp”);

props.setProperty(“mail.host”, “smtp.163.com”);

Session session = Session.getInstance(props,

new Authenticator() {

protected PasswordAuthentication getPasswordAuthentication(){

return new PasswordAuthentication(“xxx”,”xxx”);//這裡分別填寫發送email的用戶名、密碼

}

}

);

session.setDebug(true);

Message msg = new MimeMessage(session);

msg.setFrom(new InternetAddress(“xxx”));//這裡是發送方的email地址如:xxx@163.com

msg.setSubject(“test javamail”);

msg.setRecipients(RecipientType.TO,

InternetAddress.parse(“xxx”));//這裡是接收方的email地址如:xxx@163.com

msg.setContent(“谷歌”,”text/html;charset=gb2312″);

Transport.send(msg);

}

}

怎麼樣使用JavaMail發送和接收郵件

public class MailTest {

//發送的郵箱 內部代碼只適用qq郵箱

private static final String USER = “xxxxx@qq.com”;

//授權密碼 通過QQ郵箱設置-賬戶-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務-開啟POP3/SMTP服務獲取

private static final String PWD = “xxxxx”;

private String[] to;

private String[] cc;//抄送

private String[] bcc;//密送

private String[] fileList;//附件

private String subject;//主題

private String content;//內容,可以用html語言寫

public void sendMessage() throws Exception {

// 配置發送郵件的環境屬性

final Properties props = new Properties();

//下面兩段代碼是設置ssl和埠,不設置發送不出去。

props.setProperty(“mail.smtp.socketFactory.class”, “javax.net.ssl.SSLSocketFactory”);

//props.setProperty(“mail.smtp.port”, “465”);

props.setProperty(“mail.smtp.socketFactory.port”, “465”);

// 表示SMTP發送郵件,需要進行身份驗證

props.setProperty(“mail.transport.protocol”, “smtp”);// 設置傳輸協議

props.put(“mail.smtp.auth”, “true”);

props.put(“mail.smtp.host”, “smtp.qq.com”);//QQ郵箱的伺服器 如果是企業郵箱或者其他郵箱得更換該伺服器地址

// 發件人的賬號

props.put(“mail.user”, USER);

// 訪問SMTP服務時需要提供的密碼

props.put(“mail.password”, PWD);

// 構建授權信息,用於進行SMTP進行身份驗證

Authenticator authenticator = new Authenticator() {

@Override

protected PasswordAuthentication getPasswordAuthentication() {

// 用戶名、密碼

String userName = props.getProperty(“mail.user”);

String password = props.getProperty(“mail.password”);

return new PasswordAuthentication(userName, password);

}

};

// 使用環境屬性和授權信息,創建郵件會話

Session mailSession = Session.getInstance(props, authenticator);

// 創建郵件消息

MimeMessage message = new MimeMessage(mailSession);

BodyPart messageBodyPart = new MimeBodyPart();

Multipart multipart = new MimeMultipart();

// 設置發件人

InternetAddress form = new InternetAddress(

props.getProperty(“mail.user”));

message.setFrom(form);

//發送

if (to != null) {

String toList = getMailList(to);

InternetAddress[] iaToList = new InternetAddress().parse(toList);

message.setRecipients(RecipientType.TO, iaToList); // 收件人

}

//抄送

if (cc != null) {

String toListcc = getMailList(cc);

InternetAddress[] iaToListcc = new InternetAddress().parse(toListcc);

message.setRecipients(RecipientType.CC, iaToListcc); // 抄送人

}

//密送

if (bcc != null) {

String toListbcc = getMailList(bcc);

InternetAddress[] iaToListbcc = new InternetAddress().parse(toListbcc);

message.setRecipients(RecipientType.BCC, iaToListbcc); // 密送人

}

message.setSentDate(new Date()); // 發送日期 該日期可以隨意寫,你可以寫上昨天的日期(效果很特別,親測,有興趣可以試試),或者抽象出來形成一個參數。

message.setSubject(subject); // 主題

message.setText(content); // 內容

//顯示以html格式的文本內容

messageBodyPart.setContent(content,”text/html;charset=utf-8″);

multipart.addBodyPart(messageBodyPart);

//保存多個附件

if(fileList!=null){

addTach(fileList, multipart);

}

message.setContent(multipart);

// 發送郵件

Transport.send(message);

}

public void setTo(String[] to) {

this.to = to;

}

public void setCc(String[] cc) {

this.cc = cc;

}

public void setBcc(String[] bcc) {

this.bcc = bcc;

}

public void setSubject(String subject) {

this.subject = subject;

}

public void setContent(String content) {

this.content = content;

}

public void setFileList(String[] fileList) {

this.fileList = fileList;

}

private String getMailList(String[] mailArray) {

StringBuffer toList = new StringBuffer();

int length = mailArray.length;

if (mailArray != null length 2) {

toList.append(mailArray[0]);

} else {

for (int i = 0; i length; i++) {

toList.append(mailArray[i]);

if (i != (length – 1)) {

toList.append(“,”);

}

}

}

return toList.toString();

}

//添加多個附件

public void addTach(String fileList[], Multipart multipart) throws Exception {

for (int index = 0; index fileList.length; index++) {

MimeBodyPart mailArchieve = new MimeBodyPart();

FileDataSource fds = new FileDataSource(fileList[index]);

mailArchieve.setDataHandler(new DataHandler(fds));

mailArchieve.setFileName(MimeUtility.encodeText(fds.getName(),”UTF-8″,”B”));

multipart.addBodyPart(mailArchieve);

}

}

//以下是演示demo

public static void main(String args[]) {

MailTest mail = new MailTest();

mail.setSubject(“java郵件”);

mail.setContent(“你好 這是第一個java 程序發送郵件”);

//收件人 可以發給其他郵箱(163等) 下同

mail.setTo(new String[] {“xxxxx@qq.com”});

//抄送

// mail.setCc(new String[] {“xxxxx@qq.com”,”xxxxx@qq.com”});

//密送

//mail.setBcc(new String[] {“xxxxx@qq.com”,”xxxxx@qq.com”});

//發送附件列表 可以寫絕對路徑 也可以寫相對路徑(起點是項目根目錄)

// mail.setFileList(new String[] {“D:\\aa.txt”});

//發送郵件

try {

mail.sendMessage();

System.out.println(“發送郵件成功!”);

} catch (Exception e) {

System.out.println(“發送郵件失敗!”);

e.printStackTrace();

}

}

}

關於javamail

popserver,username,password三者缺一不可。

拋開JAVA Mail。你平時去查E-MAIL時候,是不是應該:1.先上E-MAIL網站(GMail還是Yahoo Mail, HotMail)2.在輸入用戶名(有的需要加@gmail.com有的直接用用戶名就行)和密碼

那麼你查看E-MAIL或發送E-MAIL使用的客戶端其實是別人製作的網頁客戶端。Java Mail讓你開發自己的Java客戶端用SMTP(Simple Mail Transfer Protocol)協議或POP3(Post Office Protocol)來收發E-MAIL。那麼以上的popserver(伺服器),username(用戶名),password(密碼)都必不可少的。用戶名和地址沒有本質區別,如:用戶名如果是abc,那麼地址就是abc@hotmail.com,一樣的。

請大神們幫忙看看,javamail郵件發送不了這了么解決

首先要確定發件郵箱已經開啟了SMTP服務,有些郵箱開啟這個功能會有一個獨立的密碼,如163郵箱;使用javamail需要使用這個獨立的密碼進行登錄。再者,目前大部分郵箱都需採用TLS加密發送郵件,javamail創建對象時需要加上這個配置。。

javamail 驗證用戶名密碼

        //1. 創建propeties

        Properties props = new Properties();

        props.setProperty(“mail.store.protocol”, “pop3”);    //協議

        props.setProperty(“mail.pop3.host”, “pop3.163.com”); //主機

        

        try{

            Session session = Session.getDefaultInstance(props);

            Store store = session.getStore();

            store.connect(smtpType, username, password);

        } catch(Exception e) {

            e.printStackTrace();

        }

這裡只要connect()方法連接成功就行了,拋出異常則代表驗證不通過.

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/280323.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-20 18:55
下一篇 2024-12-21 13:03

相關推薦

  • IDEA Java發送郵件出現錯誤解決方案

    IDEA Java是一款常用的Java開發工具,很多開發者都使用它來開發Java應用程序。然而,在使用IDEA Java發送郵件時,有可能會出現一些錯誤。本文將從多個方面對該錯誤進…

    編程 2025-04-29
  • 機智雲gagent屬於哪個協議?

    機智雲gagent主要是基於MQTT協議,同時支持TCP、TLS、WebSocket等多種協議。 一、MQTT協議介紹 MQTT全稱Message Queuing Telemetr…

    編程 2025-04-29
  • 使用Netzob進行網路協議分析

    Netzob是一款開源的網路協議分析工具。它提供了一套完整的協議分析框架,可以支持多種數據格式的解析和可視化,方便用戶對協議數據進行分析和定製。本文將從多個方面對Netzob進行詳…

    編程 2025-04-29
  • 如何取消火車票自動搶票協議

    火車票自動搶票協議,是一種利用技術手段在系統繁忙的情況下,自動刷取並搶購火車票的行為。雖然在某些情況下能夠提高購票成功率,但是也會影響其他乘客的購票權益。因此,取消火車票自動搶票協…

    編程 2025-04-29
  • USB協議棧

    USB(Universal Serial Bus)是一種常見的計算機外部介面,它已經被廣泛使用在各種設備中,例如印表機、鍵盤、滑鼠等。在實現USB通信的過程中,USB協議棧起著非常…

    編程 2025-04-27
  • DR & BDR:OSPF協議中的兩個重要角色

    一、什麼是DR & BDR? 在OSPF協議中,DR(Designated Router)和BDR(Backup Designated Router)是兩個非常重要的角色。…

    編程 2025-04-25
  • YModem協議在上位機中的應用

    一、YModem協議概述 YModem協議是一種常用於串口通信中的文件傳輸協議。它支持數據校驗和數據重傳功能,使得數據傳輸更加穩定可靠。YModem協議有多種不同的實現方式,其中最…

    編程 2025-04-25
  • 網路層協議

    一、IP協議 Internet協議(IP)是網路層中最為基礎的協議,它把數據包發送到網路上的其他主機。IP包含兩種協議:IPv4和IPv6。 IPv4協議使用32位的地址來唯一地標…

    編程 2025-04-24
  • RIP協議在哪一層

    一、RIP協議簡介 RIP(Routing Information Protocol)是一種常見的動態路由協議,也是第一個廣泛使用的動態路由協議。它使用UDP協議,常用於小型網路,…

    編程 2025-04-23
  • 深入探究SSH協議

    一、SSH協議的概述 Secure Shell(SSH)是一種加密網路協議,用於在網路上安全地傳輸數據。它最初是為取代Telnet和不安全的遠程Shell協議(例如rlogin)而…

    編程 2025-04-23

發表回復

登錄後才能評論