中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

如何用SSL加密郵件

SSL
小新
257
2021-02-15 10:36:43
欄目: 網絡安全

如何用SSL加密郵件

使用SSL加密郵件的示例:

例如在JavaMail中使用SSL對郵件發送進行加密,源碼如下:

package javamail.yisu.com;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Address;

import javax.mail.BodyPart;

import javax.mail.Multipart;

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 SendMailBySSL {

private final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

private String smtpServer; // SMTP服務器地址

private String port; // 端口

private String username; // 登錄SMTP服務器的用戶名

private String password; // 登錄SMTP服務器的密碼

private Listrecipients = new ArrayList(); // 收件人地址集合

private String subject; // 郵件主題

private String content; // 郵件正文

private Listp_w_uploadNames = new ArrayList(); // 附件路徑信息集合

public SendMailBySSL() {

}

public SendMailBySSL(String smtpServer, String port, String username,

String password, Listrecipients, String subject,

String content, Listp_w_uploadNames) {

this.smtpServer = smtpServer;

this.port = port;

this.username = username;

this.password = password;

this.recipients = recipients;

this.subject = subject;

this.content = content;

this.p_w_uploadNames = p_w_uploadNames;

}

public void setSmtpServer(String smtpServer) {

this.smtpServer = smtpServer;

}

public void setPort(String port) {

this.port = port;

}

public void setUsername(String username) {

this.username = username;

}

public void setPassword(String password) {

this.password = password;

}

public void setRecipients(Listrecipients) {

this.recipients = recipients;

}

public void setSubject(String subject) {

this.subject = subject;

}

public void setContent(String content) {

this.content = content;

}

public void setAttachmentNames(Listp_w_uploadNames) {

this.p_w_uploadNames = p_w_uploadNames;

}

/**

* 進行base64加密,防止中文亂碼

* */

public String changeEncode(String str) {

try {

str = MimeUtility.encodeText(new String(str.getBytes(), "UTF-8"),

"UTF-8", "B"); // "B"代表Base64

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return str;

}

/**

* 正式發郵件

* */

public boolean sendMail() {

Properties properties = new Properties();

properties.put("mail.smtp.host", smtpServer);

properties.put("mail.smtp.auth", "true");

properties.put("mail.smtp.socketFactory.class", SSL_FACTORY); //使用JSSE的SSL socketfactory來取代默認的socketfactory

properties.put("mail.smtp.socketFactory.fallback", "false"); // 只處理SSL的連接,對于非SSL的連接不做處理

properties.put("mail.smtp.port", port);

properties.put("mail.smtp.socketFactory.port", port);

Session session = Session.getInstance(properties);

session.setDebug(true);

MimeMessage message = new MimeMessage(session);

try {

// 發件人

Address address = new InternetAddress(username);

message.setFrom(address);

// 收件人

for (String recipient : recipients) {

System.out.println("收件人:" + recipient);

Address toAddress = new InternetAddress(recipient);

message.setRecipient(MimeMessage.RecipientType.TO, toAddress); // 設置收件人,并設置其接收類型為TO

/**

* TO:代表有健的主要接收者。 CC:代表有健的抄送接收者。 BCC:代表郵件的暗送接收者。

* */

}

// 主題

message.setSubject(changeEncode(subject));

// 時間

message.setSentDate(new Date());

Multipart multipart = new MimeMultipart();

// 添加文本

BodyPart text = new MimeBodyPart();

text.setText(content);

multipart.addBodyPart(text);

// 添加附件

for (String fileName : p_w_uploadNames) {

BodyPart adjunct = new MimeBodyPart();

FileDataSource fileDataSource = new FileDataSource(fileName);

adjunct.setDataHandler(new DataHandler(fileDataSource));

adjunct.setFileName(changeEncode(fileDataSource.getName()));

multipart.addBodyPart(adjunct);

}

// 清空收件人集合,附件集合

recipients.clear();

p_w_uploadNames.clear();

message.setContent(multipart);

message.saveChanges();

} catch (Exception e) {

e.printStackTrace();

return false;

}

try {

Transport transport = session.getTransport("smtp");

transport.connect(smtpServer, username, password);

transport.sendMessage(message, message.getAllRecipients());

transport.close();

} catch (Exception e) {

e.printStackTrace();

return false;

}

return true;

}

public static void main(String[] args) {

Listrecipients = new ArrayList();

// recipients.add("123456789@qq.com");

recipients.add("admin@yisu.cn");

String subject = "這封郵件是為了測試SMTP的SSL加密傳輸";

String content = "這是這封郵件的正文";

Listp_w_uploadNames = new ArrayList();

p_w_uploadNames.add("C://Users//Administrator//Desktop//kali.txt");

SendMailBySSL sendMailBySSL = new SendMailBySSL("smtp.163.com", "465",

"youname@163.com", "youpassword", recipients, subject, content,

p_w_uploadNames);

sendMailBySSL.sendMail();

}

}


0
永丰县| 新化县| 尤溪县| 尚志市| 洞口县| 松阳县| 成武县| 苏尼特右旗| 邯郸县| 广安市| 永安市| 红河县| 界首市| 拉萨市| 霍山县| 商丘市| 平凉市| 农安县| 资源县| 合作市| 开江县| 乐至县| 固原市| 乌拉特后旗| 衢州市| 云浮市| 施秉县| 封丘县| 兴城市| 土默特左旗| 资溪县| 阜南县| 仲巴县| 巨野县| 星座| 玉树县| 崇州市| 章丘市| 玉溪市| 紫金县| 张北县|