要實現(xiàn)郵件發(fā)送功能需要導入包:mail.jar
網(wǎng)站建設、成都網(wǎng)站設計介紹好的網(wǎng)站是理念、設計和技術的結合。創(chuàng)新互聯(lián)擁有的網(wǎng)站設計理念、多方位的設計風格、經(jīng)驗豐富的設計團隊。提供PC端+手機端網(wǎng)站建設,用營銷思維進行網(wǎng)站設計、采用先進技術開源代碼、注重用戶體驗與SEO基礎,將技術與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package org.demo.action;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.demo.form.DemoForm;
public class DemoAction extends Action {
private static final String CONTENT_TYPE = "test/html;charset=GB2312";
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DemoForm demoForm = (DemoForm) form;
System.out.println("標題是" + demoForm.getBiaoti());
System.out.println("內(nèi)容是" + demoForm.getNeirong());
try {
response.setContentType(CONTENT_TYPE);
String smtphost = "smtp.nj.headware.cn"; // 發(fā)送郵件服務器
String user = "q0000015369"; // 郵件服務器登錄用戶名
String password = "Queshuwen26"; // 郵件服務器登錄密碼
String from = "q0000015369@nj.headware.cn"; //
String to = "c0000016205@nj.headware.cn"; // 收件人郵件地址
String subject = demoForm.getBiaoti(); // 郵件標題
String body = demoForm.getNeirong(); // 郵件內(nèi)容
Properties props = new Properties();
props.put("mail.smtp.host", smtphost);
props.put("mail.smtp.auth", "true");
Session ssn = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(ssn);
InternetAddress fromAddress = new InternetAddress(from);
message.setFrom(fromAddress);
InternetAddress toAddress = new InternetAddress(to);
message.addRecipient(Message.RecipientType.TO, toAddress);
message.setSubject(subject);
message.setText(body);
Transport transport = ssn.getTransport("smtp");
transport.connect(smtphost, user, password);
transport.sendMessage(message, message
.getRecipients(Message.RecipientType.TO));
// transport.send(message);
transport.close();
return mapping.findForward("succ");
} catch (Exception e) {
e.printStackTrace();
return mapping.findForward("fail");
}
}
}
1.SMTP協(xié)議
用戶連上郵件服務器后,要想給它發(fā)送一封電子郵件,需要遵循一定的通迅規(guī)則,SMTP協(xié)議就是用于定義這種通訊規(guī)則的。
因而,通常我們也把處理用戶smtp請求(郵件發(fā)送請求)的郵件服務器稱之為SMTP服務器。(25)
2.POP3協(xié)議
同樣,用戶若想從郵件服務器管理的電子郵箱中接收一封電子郵件的話,他連上郵件服務器后,也需要遵循一定的通迅格式,POP3協(xié)議用于定義這種通訊格式。
因而,通常我們也把處理用戶pop3請求(郵件接收請求)的郵件服務器稱之為POP3服務器。(110)
下圖用于演示兩帳戶相互發(fā)送郵件的過程
3.1JavaMail API按其功能劃分通??煞譃槿缦氯箢悾?/p>
創(chuàng)建和解析郵件內(nèi)容的API :Message類是創(chuàng)建和解析郵件的核心API,它的實例對象代表一封電子郵件。
3.2發(fā)送郵件的API:Transport類是發(fā)送郵件的核心API類,它的實例對象代表實現(xiàn)了某個郵件發(fā)送協(xié)議的郵件發(fā)送對象,例如SMTP協(xié)議。
接收郵件的API:Store類是接收郵件的核心API類,它的實例對象代表實現(xiàn)了某個郵件接收協(xié)議的郵件接收對象,例如POP3協(xié)議。
3.3Session類
Session類用于定義整個應用程序所需的環(huán)境信息,以及收集客戶端與郵件服務器建立網(wǎng)絡連接的會話信息,如郵件服務器的主機名、端口號、采用的郵件發(fā)送和接收協(xié)議等。Session對象根據(jù)這些信息構建用于郵件收發(fā)的Transport和Store對象,以及為客戶端創(chuàng)建Message對象時提供信息支持。
4.郵件組織結構相關的API
MimeMessage類表示整封郵件。
MimeBodyPart類表示郵件的一個MIME消息。
MimeMultipart類表示一個由多個MIME消息組合成的組合MIME消息。
5.具體的例子程序
package?cn.edu.dlmu.send;
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?javax.mail.internet.MimeUtility;
public?class?SendMail?{
public?static?void?main(String[]?args)?throws?Exception?{
Properties?prop?=?new?Properties();
//連接的郵件服務器的主機名
prop.setProperty("mail.smtp.host",?"smtp.sina.com.cn");
//發(fā)送郵件的協(xié)議
prop.setProperty("mail.transport.protocol",?"smtp");
//是否向郵件服務器提交認證
prop.setProperty("mail.smtp.auth",?"true");
//創(chuàng)建session
Session?session?=?Session.getInstance(prop);
session.setDebug(true);
//得到transport
Transport?ts?=?session.getTransport();
//連接郵件服務器
ts.connect("smtp.sina.com.cn",?"xxxx@sina.com",?"xxxxx");
//發(fā)送郵件
MimeMessage?message?=?createMessage(session);
ts.sendMessage(message,?message.getAllRecipients());
ts.close();
}
public?static?MimeMessage?createMessage(Session?session)?throws?Exception?{
MimeMessage?message?=?new?MimeMessage(session);
//設置郵件的基本信息
message.setFrom(new?InternetAddress("xxxx@sina.com"));
message.setRecipient(Message.RecipientType.TO,?new?InternetAddress("1219070362@qq.com"));
message.setSubject("test");
//正文
MimeBodyPart?text?=?new?MimeBodyPart();
//設置charaset可以解決中文正文的亂碼問題,內(nèi)嵌可下載的圖片
text.setContent("你好xxx,img?src='c:/dog.jpg'?/測試成功!br/img?src='cid:aaa.jpg'?/",?"text/html;charset=gbk");
//圖片1
MimeBodyPart?image?=?new?MimeBodyPart();
image.setDataHandler(new?DataHandler(new?FileDataSource("src/88.jpg")));
image.setContentID("aaa.jpg");
//附件
MimeBodyPart?attach?=?new?MimeBodyPart();
DataHandler?dh?=?new?DataHandler(new?FileDataSource("src/javamail架包.jar"));
attach.setDataHandler(dh);
//解決文件中文亂碼問題
attach.setFileName(MimeUtility.encodeText(dh.getName()));
//描述正文和圖片的關系
MimeMultipart?mp?=?new?MimeMultipart();
mp.addBodyPart(text);
mp.addBodyPart(image);
mp.setSubType("related");
//描述正文和附件
MimeMultipart?mp2?=?new?MimeMultipart();
mp2.addBodyPart(attach);
//將正文封裝為一個body
MimeBodyPart?content?=?new?MimeBodyPart();
content.setContent(mp);
mp2.addBodyPart(content);
mp2.setSubType("mixed");
message.setContent(mp2);
message.saveChanges();
return?message;
}
}
方法:
1.前提準備工作:
首先,郵件的發(fā)送方要開啟POP3 和SMTP服務--即發(fā)送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");// 連接協(xié)議
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);
//設置發(fā)件人郵箱地址
message.setFrom(new InternetAddress("123456789@qq.com"));
//設置收件人地址 message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("987654321@qq.com") });
//設置郵件標題
message.setSubject("這是第一封Java郵件");
//設置郵件內(nèi)容
message.setText("內(nèi)容為: 這是第一封java發(fā)送來的郵件。");
//得到郵差對象
Transport transport = session.getTransport();
//連接自己的郵箱賬戶
transport.connect("123456789@qq.com", "vvctybgbvvophjcj");//密碼為剛才得到的授權碼
//發(fā)送郵件 transport.sendMessage(message, message.getAllRecipients());
}
}
10.運行就會發(fā)出郵件了。。。。
下面是我收到郵件的截圖,當然我把源碼中的郵件地址都是修改了,不是真實的,你們測試的時候,可以修改能你們自己的郵箱。最后,祝你也能成功,如果有什么問題,可以一起討論!
注意事項
得到的授權碼一定要保存好,程序中要使用
分享題目:java代碼實現(xiàn)郵箱功能 java制作郵箱登錄頁面
當前鏈接:http://muchs.cn/article10/dohhgdo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、軟件開發(fā)、網(wǎng)站制作、云服務器、服務器托管、標簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)