Ⅰ java mail 發郵件 1000 封以上 怎麼讓郵件快速發送
...
String to="[email protected],[email protected],[email protected]";
InternetAddress[] toList = new InternetAddress().parse(to);
msg.setRecipients(Message.RecipientType.TO, toList);
...
Transport.send(msg);
或者直連郵件網關,並由郵件網關直接轉發至收件箱所在的伺服器,因此發送速度是基本不受限的。如果沒有郵件網關,同時又不想自己完成相關功能,那麼建議不要只讓一台郵件伺服器轉發你的郵件,而是多連幾台,將自己的郵件平均分配到每台郵件伺服器上,這樣就不會由於發送過多,而被拒了。
至於處理能力,可以提幾點關於提高發送能力的建議
1.SMTP協議是支持長連接的協議,同時mail.jar實現了SMTP協議的連接、郵件發送及連接斷開,至於對連接的維護沒有涉及;同時Spring中的郵件支持是通過封裝mail.jar實現的,但只提供了單筆發送和批量發送(均為短連接)。
2.如果使用長連接,建議再引入連接池,那樣既便於維護連接,又可以提高連接的使用率。
Ⅱ java如何實現批量發送郵件
1.要想效率發郵件可以用多線程每個線程發指定批量的郵件
2.要想不被查封為垃圾郵件,這個就有很多地方要注意了
郵件的內容不要含有太多圖片信息,內容盡量簡潔,不要涉及一些淫穢色情的東西。
不要向同一個人發送同樣的郵件。
發郵件時ip最好用代理每發送個50封郵件就換個ip,因為郵件伺服器也會檢查你ip在這么短時間發了這么多郵件也會認為你是惡意群發。
最好能加入郵件接收者的白名單或訂閱名單
Ⅲ 如何使用Java發送qq郵件
1新建Java項目
2然唯液後再項目下新建一個lib文件夾,復制需要的那個兩個jar包到lib下
3選擇 activation.jar和mail.jar,右鍵添加Build path
4用QQ給QQ發送郵件,發送方得開啟指旦物第三方登錄,也就是授權登錄,需要開始POP3和SMTP,還有點擊生成授權碼,下面是操作截圖
5編寫Java代碼
6運行,最後顯示 250 Mail OK即發遲肆送成功
7接收方的QQ會收到郵件
Ⅳ 關於java定時發送郵件,類似於QQ郵箱中的定時發送功能
建議方法:
如果你的java會死亡/失去控制, 請用系統的任務調度來發送郵件;
如果你的java由jboss等之類的託管, 用jboss內部的任務調度來發送郵件.
方法1:
Windws 平台, 在task中添加一個 任務, 命令行執行java 代碼即可, 這樣可靠性由操作系統保證;
Linux等平台, 直接 crontab 處理即可.
Ⅳ java 代碼發郵件怎麼添加附件
實現java發送郵件的過程大體有以下幾步:
准備一個properties文件,該文件中存放SMTP伺服器地址等參數。
利用properties創建一個Session對象
利用Session創建Message對象,然後設置郵件主題和正文
利用Transport對象發送郵件
需要的jar有2個:activation.jar和mail.jar發送附件,需要用到Multipart對象。
importjava.io.File;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Properties;
importjavax.activation.DataHandler;
importjavax.activation.DataSource;
importjavax.activation.FileDataSource;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.MessagingException;
importjavax.mail.Multipart;
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;
{
privateMimeMessagemessage;
privateSessionsession;
privateTransporttransport;
privateStringmailHost="";
privateStringsender_username="";
privateStringsender_password="";
privatePropertiesproperties=newProperties();
/*
*初始化方法
*/
publicJavaMailWithAttachment(booleandebug){
InputStreamin=JavaMailWithAttachment.class.getResourceAsStream("MailServer.properties");
try{
properties.load(in);
this.mailHost=properties.getProperty("mail.smtp.host");
this.sender_username=properties.getProperty("mail.sender.username");
this.sender_password=properties.getProperty("mail.sender.password");
}catch(IOExceptione){
e.printStackTrace();
}
session=Session.getInstance(properties);
session.setDebug(debug);//開啟後有調試信息
message=newMimeMessage(session);
}
/**
*發送郵件
*
*@paramsubject
*郵件主題
*@paramsendHtml
*郵件內容
*@paramreceiveUser
*收件人地址
*@paramattachment
*附件
*/
publicvoiddoSendHtmlEmail(Stringsubject,StringsendHtml,StringreceiveUser,Fileattachment){
try{
//發件人
InternetAddressfrom=newInternetAddress(sender_username);
message.setFrom(from);
//收件人
InternetAddressto=newInternetAddress(receiveUser);
message.setRecipient(Message.RecipientType.TO,to);
//郵件主題
message.setSubject(subject);
//向multipart對象中添加郵件的各個部分內容,包括文本內容和附件
Multipartmultipart=newMimeMultipart();
//添加郵件正文
BodyPartcontentPart=newMimeBodyPart();
contentPart.setContent(sendHtml,"text/html;charset=UTF-8");
multipart.addBodyPart(contentPart);
//添加附件的內容
if(attachment!=null){
BodyPartattachmentBodyPart=newMimeBodyPart();
DataSourcesource=newFileDataSource(attachment);
attachmentBodyPart.setDataHandler(newDataHandler(source));
//網上流傳的解決文件名亂碼的方法,其實用MimeUtility.encodeWord就可以很方便的搞定
//這里很重要,通過下面的Base64編碼的轉換可以保證你的中文附件標題名在發送時不會變成亂碼
//sun.misc.BASE64Encoderenc=newsun.misc.BASE64Encoder();
//messageBodyPart.setFileName("=?GBK?B?"+enc.encode(attachment.getName().getBytes())+"?=");
//MimeUtility.encodeWord可以避免文件名亂碼
attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
multipart.addBodyPart(attachmentBodyPart);
}
//將multipart對象放到message中
message.setContent(multipart);
//保存郵件
message.saveChanges();
transport=session.getTransport("smtp");
//smtp驗證,就是你用來發郵件的郵箱用戶名密碼
transport.connect(mailHost,sender_username,sender_password);
//發送
transport.sendMessage(message,message.getAllRecipients());
System.out.println("sendsuccess!");
}catch(Exceptione){
e.printStackTrace();
}finally{
if(transport!=null){
try{
transport.close();
}catch(MessagingExceptione){
e.printStackTrace();
}
}
}
}
publicstaticvoidmain(String[]args){
JavaMailWithAttachmentse=newJavaMailWithAttachment(true);
Fileaffix=newFile("c:\測試-test.txt");
se.doSendHtmlEmail("郵件主題","郵件內容","[email protected]",affix);//
}
}
Ⅵ 用java來發送帶附件的郵件
用java來發送帶附件的郵件要翻譯的。