本文目錄一覽:
- 1、javamail客戶端需要開25埠么
- 2、怎麼用javamail 通過http代理髮郵件
- 3、怎麼樣使用JavaMail發送和接收郵件
- 4、關於javamail
- 5、請大神們幫忙看看,javamail郵件發送不了這了么解決
- 6、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