java 发邮件功能,Java 实现发送邮件功能

首先需导入activation.jarjavax.mail.jar两个jar包

自定义一个Mail类来实现邮件基本内容的设置和发送功能

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Address;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.MessagingException;

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;

public class Mail {

private MimeMessage mimeMsg; // MIME邮件对象

private Session session; // 邮件会话对象

private Properties props; // 系统属性

private boolean needAuth = false; // smtp是否需要认证

private String username = ""; // smtp认证用户名和密码

private String password = "";

private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成//MimeMessage对象

public Mail(String smtp) {

setSmtpHost(smtp);

createMimeMessage();

}

public void setSmtpHost(String hostName) {

System.out.println("设置系统属性:mail.smtp.host = " + hostName);

if (props == null)

props = System.getProperties(); // 获得系统属性对象

props.put("mail.smtp.host", hostName); // 设置SMTP主机

}

public boolean createMimeMessage() {

try {

System.out.println("准备获取邮件会话对象!");

session = Session.getDefaultInstance(props, null); // 获得邮件会话对象

} catch (Exception e) {

System.err.println("获取邮件会话对象时发生错误!" + e);

return false;

}

System.out.println("准备创建MIME邮件对象!");

try {

mimeMsg = new MimeMessage(session); // 创建MIME邮件对象

mp = new MimeMultipart(); // mp 一个multipart对象

// Multipart is a container that holds multiple body parts.

return true;

} catch (Exception e) {

System.err.println("创建MIME邮件对象失败!" + e);

return false;

}

}

public void setNeedAuth(boolean need) {

needAuth = need;

System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);

if (props == null)

props = System.getProperties();

if (needAuth) {

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

} else {

props.put("mail.smtp.auth", "false");

}

}

public void setNamePass(String name, String pass) {

System.out.println("程序得到用户名与密码");

username = name;

password = pass;

}

public boolean setSubject(String mailSubject) {

System.out.println("设置邮件主题!");

try {

mimeMsg.setSubject(mailSubject);

return true;

} catch (Exception e) {

System.err.println("设置邮件主题发生错误!");

return false;

}

}

public boolean setBody(String mailBody) {

try {

System.out.println("设置邮件体格式");

BodyPart bp = new MimeBodyPart();

bp.setContent(

""

+ mailBody, "text/html;charset=GB2312");

mp.addBodyPart(bp);

return true;

} catch (Exception e) {

System.err.println("设置邮件正文时发生错误!" + e);

return false;

}

}

public boolean addFileAffix(String filename) {

System.out.println("增加邮件附件:" + filename);

try {

BodyPart bp = new MimeBodyPart();

FileDataSource fileds = new FileDataSource(filename);

bp.setDataHandler(new DataHandler(fileds));

bp.setFileName(fileds.getName());

mp.addBodyPart(bp);

return true;

} catch (Exception e) {

System.err.println("增加邮件附件:" + filename + "发生错误!" + e);

return false;

}

}

public boolean setFile(Object o, String type) {

try {

mimeMsg.setContent(o, type);

} catch (MessagingException e) {

e.printStackTrace();

return false;

}

return true;

}

public boolean setFrom(String from) {

System.out.println("设置发信人!");

try {

mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人

return true;

} catch (Exception e) {

return false;

}

}

public boolean setTo(String to) {

System.out.println("设置收信人");

if (to == null)

return false;

try {

mimeMsg.setRecipients(Message.RecipientType.TO,

InternetAddress.parse(to));

return true;

} catch (Exception e) {

return false;

}

}

public boolean setCopyTo(String copyto) {

System.out.println("发送附件到");

if (copyto == null)

return false;

try {

mimeMsg.setRecipients(Message.RecipientType.CC,

(Address[]) InternetAddress.parse(copyto));

return true;

} catch (Exception e) {

return false;

}

}

public boolean sendout() {

try {

mimeMsg.setContent(mp);

mimeMsg.saveChanges();

System.out.println("正在发送邮件....");

Session mailSession = Session.getInstance(props, null);

Transport transport = mailSession.getTransport("smtp"); // ???

transport.connect((String) props.get("mail.smtp.host"), username,

password);

transport.sendMessage(mimeMsg,

mimeMsg.getRecipients(Message.RecipientType.TO));

// transport.send(mimeMsg);

System.out.println("发送邮件成功!");

transport.close();

return true;

} catch (Exception e) {

System.err.println("邮件发送失败!" + e);

return false;

}

}

}

用于发送邮件的方法:

public static int sendEmail(String subject, String mailBody,

String attachmentDir, String smtpString, boolean needAuth,

String to, String from, String password, Object file, String type) {

int result = 0;

Mail mMail = new Mail(smtpString);

mMail.setNeedAuth(needAuth);

mMail.setNamePass(from, password);

if (subject == null) {

subject = "Test Result";

}

if (!mMail.setSubject(subject)) {

return -1;

}

if (!mMail.setBody(mailBody)) {

return -2;

}

if (!mMail.setTo(to)) {

return -3;

}

if (!mMail.setFrom(from)) {

return -4;

}

if (attachmentDir != null) {

if (!mMail.addFileAffix(attachmentDir)) {

return -5;

}

}

if (file != null && type != null) {

if (!mMail.setFile(file, type)) {

return -7;

}

}

if (!mMail.sendout()) {

return -6;

}

return result;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 可以使用 JavaMail API 实现邮件发送功能。以下是一个简单的代码示例: ``` import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class MailSender { public static void main(String[] args) { final String username = "your-email@example.com"; // 替换为你的邮箱用户名 final String password = "your-password"; // 替换为你的邮箱密码 Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.example.com"); // 替换为你的 SMTP 服务器地址 props.put("mail.smtp.port", "587"); // 替换为你的 SMTP 端口号 Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your-email@example.com")); // 替换为你的发件人邮箱地址 message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient-email@example.com")); // 替换为你的收件人邮箱地址,多个邮箱地址用逗号分隔 message.setSubject("Test Email"); message.setText("This is a test email sent from Java."); Transport.send(message); System.out.println("Email sent successfully."); } catch (MessagingException e) { throw new RuntimeException(e); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值