導航:首頁 > 編程語言 > javassl郵件

javassl郵件

發布時間:2022-06-10 19:34:33

java如何使用ssl連接qq郵箱

Gmail目前已經啟用了POP3和SMTP服務,與其他郵箱不同的是Gmail提供的POP3和SMTP是使用安全套接字層SSL的,因此常規的JavaMail程序是無法收發郵件的,下面是使用JavaMail如何收取Gmail郵件以及發送郵件的代碼:
1.[代碼]GmailFetch.java跳至[1][2][全屏預覽]
01packagelius.javamail.ssl;
02
03importjava.io.UnsupportedEncodingException;
04importjava.security.*;
05importjava.util.Properties;
06importjavax.mail.*;
07importjavax.mail.internet.InternetAddress;
08importjavax.mail.internet.MimeUtility;
09
10/**
11*用於收取Gmail郵件
12*@authorWinterLau
13*/
14publicclassGmailFetch{
15
16publicstaticvoidmain(Stringargv[])throwsException{
17
18Security.addProvider(newcom.sun.net.ssl.internal.ssl.Provider());
19finalStringSSL_FACTORY="javax.net.ssl.SSLSocketFactory";
20
21//GetaPropertiesobject
22Propertiesprops=System.getProperties();
23props.setProperty("mail.pop3.socketFactory.class",SSL_FACTORY);
24props.setProperty("mail.pop3.socketFactory.fallback","false");
25props.setProperty("mail.pop3.port","995");
26props.setProperty("mail.pop3.socketFactory.port","995");
27
28//以下步驟跟一般的JavaMail操作相同
29Sessionsession=Session.getDefaultInstance(props,null);
30
31//請將紅色部分對應替換成你的郵箱帳號和密碼
32URLNameurln=newURLName("pop3","pop.gmail.com",995,null,
33"[郵箱帳號]","[郵箱密碼]");
34Storestore=session.getStore(urln);
35Folderinbox=null;
36try{
37store.connect();
38inbox=store.getFolder("INBOX");
39inbox.open(Folder.READ_ONLY);
40FetchProfileprofile=newFetchProfile();
41profile.add(FetchProfile.Item.ENVELOPE);
42Message[]messages=inbox.getMessages();
43inbox.fetch(messages,profile);
44System.out.println("收件箱的郵件數:"+messages.length);
45for(inti=0;i<messages.length;i++){
46//郵件發送者
47Stringfrom=decodeText(messages[i].getFrom()[0].toString());
48InternetAddressia=newInternetAddress(from);
49System.out.println("FROM:"+ia.getPersonal()+'('+ia.getAddress()+')');
50//郵件標題
51System.out.println("TITLE:"+messages[i].getSubject());
52//郵件大小
53System.out.println("SIZE:"+messages[i].getSize());
54//郵件發送時間
55System.out.println("DATE:"+messages[i].getSentDate());
56}
57}finally{
58try{
59inbox.close(false);
60}catch(Exceptione){}
61try{
62store.close();
63}catch(Exceptione){}
64}
65}
66
(Stringtext)
{
69if(text==null)
70returnnull;
71if(text.startsWith("=?GB")||text.startsWith("=?gb"))
72text=MimeUtility.decodeText(text);
73else
74text=newString(text.getBytes("ISO8859_1"));
75returntext;
76}
77
78}
2.[代碼]GmailSender.java
01packagelius.javamail.ssl;
02
03importjava.security.Security;
04importjava.util.Date;
05importjava.util.Properties;
06
07importjavax.mail.Authenticator;
08importjavax.mail.Message;
09importjavax.mail.MessagingException;
10importjavax.mail.PasswordAuthentication;
11importjavax.mail.Session;
12importjavax.mail.Transport;
13importjavax.mail.internet.AddressException;
14importjavax.mail.internet.InternetAddress;
15importjavax.mail.internet.MimeMessage;
16
17/**
18*使用Gmail發送郵件
19*@authorWinterLau
20*/
21publicclassGmailSender{
22
23publicstaticvoidmain(String[]args)throwsAddressException,MessagingException{
24Security.addProvider(newcom.sun.net.ssl.internal.ssl.Provider());
25finalStringSSL_FACTORY="javax.net.ssl.SSLSocketFactory";
26//GetaPropertiesobject
27Propertiesprops=System.getProperties();
28props.setProperty("mail.smtp.host","smtp.gmail.com");
29props.setProperty("mail.smtp.socketFactory.class",SSL_FACTORY);
30props.setProperty("mail.smtp.socketFactory.fallback","false");
31props.setProperty("mail.smtp.port","465");
32props.setProperty("mail.smtp.socketFactory.port","465");
33props.put("mail.smtp.auth","true");
34finalStringusername="[郵箱帳號]";
35finalStringpassword="[郵箱密碼]";
36Sessionsession=Session.getDefaultInstance(props,newAuthenticator(){
(){
(username,password);
39}});
40
41//--Createanewmessage--
42Messagemsg=newMimeMessage(session);
43
44//--SettheFROMandTOfields--
45msg.setFrom(newInternetAddress(username+"@mo168.com"));
46msg.setRecipients(Message.RecipientType.TO,
47InternetAddress.parse("[收件人地址]",false));
48msg.setSubject("Hello");
49msg.setText("Howareyou");
50msg.setSentDate(newDate());
51Transport.send(msg);
52
53System.out.println("Messagesent.");
54}
55}

② JAVA發送郵件驗證異常

我把我寫的給你看看吧
import java.util.*;
import javax.mail.internet.*;
import javax.mail.*;

/**
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: xjtu </p>
*
* @author cy
* @version 1.0
*/
public class Mail {

/*
* 參數 to 接收者郵箱地址
* title 主題
* content 內容
*/
public static boolean sendMail(String to,String title,String content){
try{
//接收郵件信息
String to_mail=to;
String to_title=title;
String to_content=content;

//建立郵件會話
Properties props=new Properties();//也可用Properties props = System.getProperties();
props.put("mail.smtp.host","163.com ");//存儲發送郵件伺服器的信息
props.put("mail.smtp.auth","true");//同時通過驗證
Session s=Session.getInstance(props);//根據屬性新建一個郵件會話
s.setDebug(true);

//由郵件會話新建一個消息對象
MimeMessage message=new MimeMessage(s);//由郵件會話新建一個消息對象

//設置郵件
InternetAddress from=new InternetAddress("[email protected] ");
message.setFrom(from);//設置發件人
InternetAddress toWhere=new InternetAddress(to_mail);
message.setRecipient(Message.RecipientType.TO,toWhere);//設置收件人,並設置其接收類型為TO
message.setSubject(to_title);//設置主題
message.setText(to_content);//設置信件內容
message.setSentDate(new Date());//設置發信時間

//發送郵件
message.saveChanges();//存儲郵件信息
Transport transport=s.getTransport("smtp");
//以smtp方式登錄郵箱,第一個參數是發送郵件用的郵件伺服器SMTP地址,第二個參數為用戶名,第三個參數為密碼
transport.connect("163.com","[email protected] ","87w92ab@");
transport.sendMessage(message,message.getAllRecipients());//發送郵件,其中第二個參數是所有已設好的收件人地址
transport.close();
return true;
}catch(MessagingException e){
System.err.println("發送失敗!");
return false;
}
}
public static void main(String[] args) {
for(int i=1;i<=1000;i++){
boolean isSuccess = Mail.sendMail("這里輸入待發送的郵件地址", "這是主題", "這是內容");
if(isSuccess)System.err.println("已發送了"+i+"封郵件!");
else break;
}
System.out.println("發送完成!");
}
}

③ java郵箱發送報錯

package com.gpt.util.email;

import java.io.FileOutputStream;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import com.gpt.util.PropertiesUtil;

/**
*
* Java郵件發送類,使用javaMail類進行郵件發送
* by CKQ
* */

public class MailUtil {
//郵件伺服器
private static String mail_host=(String)PropertiesUtil.getMap().get("mail_host");//"smtp.yeah.net";
//郵件伺服器埠
private static int port=Integer.valueOf((String)PropertiesUtil.getMap().get("mail_port"));//25;
//郵件協議
private static String mail_transport_protocol=(String)PropertiesUtil.getMap().get("mail_transport_protocol");//"smtp";
//需要smtp驗證
private static String mail_smtp_auth=(String)PropertiesUtil.getMap().get("mail_smtp_auth");//"true";
//發送人用戶名
private static String username=(String)PropertiesUtil.getMap().get("mail_username");//"[email protected]";
//發送人密碼
private static String password=(String)PropertiesUtil.getMap().get("mail_password");//"xxxxxx";

//發送純文本郵件
public static boolean sendSimpleMail(String from,String to,String subject,String content) {
boolean result=true;
try {
Properties prop=new Properties();
prop.setProperty("mail.host", mail_host);
prop.setProperty("mail.transport.protocol", mail_transport_protocol);
prop.setProperty("mail.smtp.auth", mail_smtp_auth);
//經驗證qq郵箱需要添加一下兩條記錄,否則失敗,其他暫時不知道,這是安全協議所需要的類 add by CKQ 2017-7-19
prop.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
prop.setProperty("mail.smtp.socketFactory.port", String.valueOf(port));
Session session=Session.getInstance(prop);
//設置為debug模式 ,生產環境應該關掉
session.setDebug(true);
//獲得transport對象
Transport ts=session.getTransport();

//連上郵件伺服器
ts.connect(mail_host,port, username,password);
//創建郵件
MimeMessage message=new MimeMessage(session);
//設置發送人
message.setFrom(new InternetAddress(from));

//設置接收人
message.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(to));
//設置主題
message.setSubject(subject);
//設置內容
message.setContent(content,"text/html;charset=UTF-8");
//發送郵件
ts.sendMessage(message, message.getAllRecipients());
//關閉連接
ts.close();
} catch (Exception e) {
e.printStackTrace();
result=false;
}

return result;
}

//發送帶圖片的郵件
public static boolean sendImageMail(String from,String to,String subject,String absoluteImagePath) throws Exception{
boolean result=true;

try {

//獲取圖片後綴
String suffix=absoluteImagePath.substring(absoluteImagePath.lastIndexOf(".")+1,absoluteImagePath.length()) ;
//定義contentId,圖片到達郵件伺服器後會有一個contentId,然後html中可以引用這個contentId顯示該圖片。
String contentId="1."+suffix;
//內容模板
String content="帶圖片的郵件<img src='cid:"+contentId+"'/>";

Properties prop=new Properties();
prop.setProperty("mail.host", mail_host);
prop.setProperty("mail.transport.protocol", mail_transport_protocol);
prop.setProperty("mail.smtp.auth", mail_smtp_auth);
Session session=Session.getInstance(prop);
//設置為debug模式 ,生產環境應該關掉
session.setDebug(true);
//獲得transport對象
Transport ts=session.getTransport();
//連上郵件伺服器
ts.connect(mail_host,port, username,password);
//創建郵件
MimeMessage message=new MimeMessage(session);
//設置發送人
message.setFrom(new InternetAddress(from));
//設置接收人
message.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(to));
//設置標題
message.setSubject(subject);
//創建正文
MimeBodyPart text=new MimeBodyPart();
//設置內容
text.setContent(content,"text/html;charset=UTF8");
//創建一個圖片
MimeBodyPart image=new MimeBodyPart();
//從本地absoluteImagePath文件讀取
DataHandler dh=new DataHandler(new FileDataSource(absoluteImagePath));
image.setDataHandler(dh);
//設置圖片的contentId
image.setContentID(contentId);
//創建容器描述數據關系
javax.mail.internet.MimeMultipart mm=new MimeMultipart();
//容器添加內容
mm.addBodyPart(text);
//容器添加圖片
mm.addBodyPart(image);
mm.setSubType("related");
message.setContent(mm);
message.saveChanges();
//存儲創建的郵件
message.writeTo(new FileOutputStream("F:/imagemail.eml"));
ts.sendMessage(message, message.getAllRecipients());
ts.close();
} catch (Exception e) {
e.printStackTrace();
result=false;
}

return result;
}

//發送帶附件的郵件
public static boolean sendAttachMail(String from,String to,String subject,String content,List<String> absoluteFilePathList) throws Exception{
boolean result=true;
try {
Properties prop=new Properties();
prop.setProperty("mail.host", mail_host);
prop.setProperty("mail.transport.protocol", mail_transport_protocol);
prop.setProperty("mail.smtp.auth", mail_smtp_auth);
Session session=Session.getInstance(prop);
//設置為debug模式 ,生產環境應該關掉
//session.setDebug(true);
//獲得transport對象
Transport ts=session.getTransport();
//連接郵件伺服器
ts.connect(mail_host,port, username,password);
//創建郵件
MimeMessage message=new MimeMessage(session);
//設置發送人
message.setFrom(new InternetAddress(from));
//設置接收人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
//設置主題
message.setSubject(subject);
//創建正文
MimeBodyPart text=new MimeBodyPart();
//設置正文內容
text.setContent(content,"text/html;charset=UTF-8");
//創建容器描述關系
MimeMultipart mp=new MimeMultipart();
//添加正文
mp.addBodyPart(text);

for(int i=0;i<absoluteFilePathList.size();i++){
//創建附件
MimeBodyPart attach=new MimeBodyPart();
DataHandler dh=new DataHandler(new FileDataSource(absoluteFilePathList.get(i)));
attach.setDataHandler(dh);
attach.setFileName(dh.getName());
//容器添加附件
mp.addBodyPart(attach);
}
mp.setSubType("mixed");

message.setContent(mp);
message.saveChanges();
//保存郵件至F盤
message.writeTo(new FileOutputStream("F:/attachMail.eml"));
ts.sendMessage(message, message.getAllRecipients());
ts.close();
} catch (Exception e) {
e.printStackTrace();
result=false;
}

return result;
}
}

④ java使用main函數進行郵件發送怎樣設置郵件格式

1、首先電腦可以連網;

代碼:

//獲取Email
StringguwenEmail="你的發送Email";
//將Email取出@和.之間的後綴,作為發送類型,比如[email protected]→qq
Stringguwen=guwenEmail.substring(guwenEmail.indexOf("@")+1,guwenEmail.indexOf("."));
//獲取密碼
StringguwenPwd="密碼";
//獲取Email
Stringtouremail="目標Email";
//創建發送郵件對象email
SimpleEmailemail=newSimpleEmail();
//設置發送類型
email.setHostName("smtp."+guwen+".com");
//設置email,密碼
email.setAuthentication(guwenEmail,guwenPwd);
//設置字元編碼
email.setCharset("UTF-8");
try{
email.setSSL(true);
//設置接收郵箱
email.addTo(touremail);
//設置發送郵箱
email.setFrom(guwenEmail);
//設置郵件標題
email.setSubject("路書");
//設置郵件內容
email.setMsg("呵呵");
//設置發送
email.send();
}catch(Exceptione){
e.printStackTrace();
returnINPUT;
}

⑤ JAVA發送郵件提示530怎麼辦

530是安全驗證沒通過

倆可能

1、你郵箱是開了ssl的,你javamail代碼里沒寫這段

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

2、你的郵箱限制了pop和smtp,這就沒轍了。不過一般郵箱里會提供開啟pop的選項

⑥ 【Java】有java收取郵件,但是對方的郵件伺服器,埠995有ssl加密,有做過這方面的大神啊

http://blog.csdn.net/chenshanhao2008/article/details/5695072
這裡面有SSL方式收取郵件的例子,你試試,

⑦ 用java來發送帶附件的郵件

用java來發送帶附件的郵件要翻譯的。

⑧ java通過https發送郵件。本地發送郵件沒有問題,但是上傳到伺服器上就不能發送了

你好:伺服器的話,一個可能原因就是對配置文件的路徑讀取有問題,你可以可列印下路徑,看看配置文件是否可以找到;再就是伺服器的話,可以看下發送郵件的埠是否可用。

⑨ javamail的tls和ssl方式是什麼意思

tls/ssl協議是安全通訊協議。這種協議目前各種大型郵件傳輸服務商都支持,有的郵箱可以設置沒有這個協議不能發送郵件。其實不用太關注這個通訊協議,在使用javamail中使用tls/ssl也很簡單:就是加一個配置而已,其他內容已經封裝好了。

附:SSL/TLS 單向認證
用戶到伺服器之間存在單方面的認證,即客戶端會認證伺服器端身份,而伺服器端不會去對客戶端身份進行驗證。首先,客戶端發起握手請求,伺服器收到握手請求後,會選擇適合雙方的協議版本和加密方式。然後,再將協商的結果和伺服器端的公鑰一起發送給客戶端。客戶端利用伺服器端的公鑰,對要發送的數據進行加密,並發送給伺服器端。伺服器端收到後,會用本地私鑰對收到的客戶端加密數據進行解密。然後,通訊雙方都會使用這些數據來產生雙方之間通訊的加密密鑰。接下來,雙方就可以開始安全通訊過程了。

⑩ 如何使用Java發送qq郵件

方法:

1.前提准備工作:
首先,郵件的發送方要開啟POP3 和SMTP服務--即發送qq郵件的賬號要開啟POP3 和SMTP服務

2.開啟方法:
登陸qq郵箱
3.點擊 設置

4.點擊—-賬戶

5.找到:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務 —點擊開啟

6.送簡訊 —–點擊確定

7.稍等一會,很得到一個授權碼! –注意:這個一定要記住,一會用到

8.點擊保存修改 —OK 完成

9.java 測試代碼:
package cn.cupcat.test;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class SendmailUtil {
public static void main(String[] args) throws AddressException, MessagingException {

Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 連接協議
properties.put("mail.smtp.host", "smtp.qq.com");// 主機名
properties.put("mail.smtp.port", 465);// 埠號
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");//設置是否使用ssl安全連接 ---一般都使用
properties.put("mail.debug", "true");//設置是否顯示debug信息 true 會在控制台顯示相關信息
//得到回話對象
Session session = Session.getInstance(properties);
// 獲取郵件對象
Message message = new MimeMessage(session);
//設置發件人郵箱地址
message.setFrom(new InternetAddress("[email protected]"));
//設置收件人地址 message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("[email protected]") });
//設置郵件標題
message.setSubject("這是第一封Java郵件");
//設置郵件內容
message.setText("內容為: 這是第一封java發送來的郵件。");
//得到郵差對象
Transport transport = session.getTransport();
//連接自己的郵箱賬戶
transport.connect("[email protected]", "vvctybgbvvophjcj");//密碼為剛才得到的授權碼
//發送郵件 transport.sendMessage(message, message.getAllRecipients());
}
}
10.運行就會發出郵件了。。。。
下面是我收到郵件的截圖,當然我把源碼中的郵件地址都是修改了,不是真實的,你們測試的時候,可以修改能你們自己的郵箱。最後,祝你也能成功,如果有什麼問題,可以一起討論!

注意事項

得到的授權碼一定要保存好,程序中要使用

閱讀全文

與javassl郵件相關的資料

熱點內容
cmd編譯utf8 瀏覽:274
怎麼截取app接受的數據 瀏覽:274
nrf24l01pdf 瀏覽:296
php字元串轉array 瀏覽:432
U盤分了文件夾後 瀏覽:938
javasetstring 瀏覽:835
壓縮包里文件夾是白色的 瀏覽:470
編譯鏈接知乎 瀏覽:589
php查詢按鈕 瀏覽:713
有音響游戲解壓神器 瀏覽:251
怎麼壓縮圖片jpeg 瀏覽:711
澳大利亞net程序員 瀏覽:577
程序員加班難受 瀏覽:986
如何看伺服器品牌 瀏覽:254
ecy50clp壓縮機多少W 瀏覽:753
mac終端命令怎麼保存 瀏覽:848
微信公眾號圖片壓縮 瀏覽:438
可以在安卓平板上畫畫的軟體是什麼 瀏覽:436
高盛數字加密 瀏覽:895
軟著網上能不能查到自己的源碼 瀏覽:915