❶ javamail 用qq郵箱發送一直報錯
估摸著你是沒有設置使用stl傳輸,認證屬性設置中增加stl協議傳輸試試,如果還是不行,可以仔細看看javamail官網,有配置的demo。
❷ java發送郵件報錯的問題
你得給你的qq郵箱設置密碼,密碼不是你的qq密碼,需要自己設置
❸ java發郵件,密碼都正確就是發不出去,有的就能發出去
以qq郵箱為例:在收發件郵箱的「設置」里打開「賬戶」設置界面,找到POP3/IMAP......這些服務設置的地方,確保SMTP等服務開啟,才能接收到
如下圖
❹ java如何實現批量發送郵件
1.要想效率發郵件可以用多線程每個線程發指定批量的郵件
2.要想不被查封為垃圾郵件,這個就有很多地方要注意了
郵件的內容不要含有太多圖片信息,內容盡量簡潔,不要涉及一些淫穢色情的東西。
不要向同一個人發送同樣的郵件。
發郵件時ip最好用代理每發送個50封郵件就換個ip,因為郵件伺服器也會檢查你ip在這么短時間發了這么多郵件也會認為你是惡意群發。
最好能加入郵件接收者的白名單或訂閱名單
❺ Java收發郵件過程中具體的功能是怎麼實現的
1.SMTP協議
用戶連上郵件伺服器後,要想給它發送一封電子郵件,需要遵循一定的通迅規則,SMTP協議就是用於定義這種通訊規則的。
因而,通常我們也把處理用戶smtp請求(郵件發送請求)的郵件伺服器稱之為SMTP伺服器。(25)
2.POP3協議
同樣,用戶若想從郵件伺服器管理的電子郵箱中接收一封電子郵件的話,他連上郵件伺服器後,也需要遵循一定的通迅格式,POP3協議用於定義這種通訊格式。
因而,通常我們也把處理用戶pop3請求(郵件接收請求)的郵件伺服器稱之為POP3伺服器。(110)
下圖用於演示兩帳戶相互發送郵件的過程
packagecn.e.dlmu.send;
importjava.util.Properties;
importjavax.activation.DataHandler;
importjavax.activation.FileDataSource;
importjavax.mail.Message;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
importjavax.mail.internet.MimeUtility;
publicclassSendMail{
publicstaticvoidmain(String[]args)throwsException{
Propertiesprop=newProperties();
//連接的郵件伺服器的主機名
prop.setProperty("mail.smtp.host","smtp.sina.com.cn");
//發送郵件的協議
prop.setProperty("mail.transport.protocol","smtp");
//是否向郵件伺服器提交認證
prop.setProperty("mail.smtp.auth","true");
//創建session
Sessionsession=Session.getInstance(prop);
session.setDebug(true);
//得到transport
Transportts=session.getTransport();
//連接郵件伺服器
ts.connect("smtp.sina.com.cn","[email protected]","xxxxx");
//發送郵件
MimeMessagemessage=createMessage(session);
ts.sendMessage(message,message.getAllRecipients());
ts.close();
}
(Sessionsession)throwsException{
MimeMessagemessage=newMimeMessage(session);
//設置郵件的基本信息
message.setFrom(newInternetAddress("[email protected]"));
message.setRecipient(Message.RecipientType.TO,newInternetAddress("[email protected]"));
message.setSubject("test");
//正文
MimeBodyParttext=newMimeBodyPart();
//設置charaset可以解決中文正文的亂碼問題,內嵌可下載的圖片
text.setContent("你好xxx,<imgsrc='c:/dog.jpg'/>測試成功!<br/><imgsrc='cid:aaa.jpg'/>","text/html;charset=gbk");
//圖片1
MimeBodyPartimage=newMimeBodyPart();
image.setDataHandler(newDataHandler(newFileDataSource("src/88.jpg")));
image.setContentID("aaa.jpg");
//附件
MimeBodyPartattach=newMimeBodyPart();
DataHandlerdh=newDataHandler(newFileDataSource("src/javamail架包.jar"));
attach.setDataHandler(dh);
//解決文件中文亂碼問題
attach.setFileName(MimeUtility.encodeText(dh.getName()));
//描述正文和圖片的關系
MimeMultipartmp=newMimeMultipart();
mp.addBodyPart(text);
mp.addBodyPart(image);
mp.setSubType("related");
//描述正文和附件
MimeMultipartmp2=newMimeMultipart();
mp2.addBodyPart(attach);
//將正文封裝為一個body
MimeBodyPartcontent=newMimeBodyPart();
content.setContent(mp);
mp2.addBodyPart(content);
mp2.setSubType("mixed");
message.setContent(mp2);
message.saveChanges();
returnmessage;
}
}
❻ Java Mail發送郵件
連接的錯誤,smtp是需要登錄伺服器的使用的是base64的編碼格式。沒有代碼也不太清楚 你哪裡錯了
❼ 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 mail發送給多個QQ郵箱接收者時,每個QQ郵箱都收到兩份相同的郵件。
List<String>too=newArrayList<String>();
too.add("****@163.com");
// too.add("******@163.com");
InternetAddress[]to_mail=newInternetAddress[too.size()];
for(inti=0;i<too.size();i++){//設置接收郵件人的地址
to_mail[i]=newInternetAddress(String.valueOf(too.get(i)));
}
messageHelper.setTo(to_mail);
不要用for循環 用internetAddress[] . 我前幾天也是跟你一樣.
❾ 用java寫一個郵件發送代碼
public boolean mainto()
{
boolean flag = true;
//建立郵件會話
Properties pro = new Properties();
pro.put("mail.smtp.host","smtp.qq.com");//存儲發送郵件的伺服器
pro.put("mail.smtp.auth","true"); //通過伺服器驗證
Session s =Session.getInstance(pro); //根據屬性新建一個郵件會話
//s.setDebug(true);
//由郵件會話新建一個消息對象
MimeMessage message = new MimeMessage(s);
//設置郵件
InternetAddress fromAddr = null;
InternetAddress toAddr = null;
try
{
fromAddr = new InternetAddress(451144426+"@qq.com"); //郵件發送地址
message.setFrom(fromAddr); //設置發送地址
toAddr = new InternetAddress("[email protected]"); //郵件接收地址
message.setRecipient(Message.RecipientType.TO, toAddr); //設置接收地址
message.setSubject(title); //設置郵件標題
message.setText(content); //設置郵件正文
message.setSentDate(new Date()); //設置郵件日期
message.saveChanges(); //保存郵件更改信息
Transport transport = s.getTransport("smtp");
transport.connect("smtp.qq.com", "451144426", "密碼"); //伺服器地址,郵箱賬號,郵箱密碼
transport.sendMessage(message, message.getAllRecipients()); //發送郵件
transport.close();//關閉
}
catch (Exception e)
{
e.printStackTrace();
flag = false;//發送失敗
}
return flag;
}
這是一個javaMail的郵件發送代碼,需要一個mail.jar
❿ 關於java定時發送郵件,類似於QQ郵箱中的定時發送功能
建議方法:
如果你的java會死亡/失去控制, 請用系統的任務調度來發送郵件;
如果你的java由jboss等之類的託管, 用jboss內部的任務調度來發送郵件.
方法1:
Windws 平台, 在task中添加一個 任務, 命令行執行java 代碼即可, 這樣可靠性由操作系統保證;
Linux等平台, 直接 crontab 處理即可.