javamail发送邮件--sendmail

package com.mail;

import org.apache.log4j.Logger;

import java.util.* ;
import java.io.*;
import org.apache.log4j.Logger;
import javax.mail.* ;
import javax.mail.internet.* ;
import javax.activation.* ;

/*
*   @author Administrator
*   发送邮件
*/
public class SendMail {
    static Logger logger = Logger.getLogger(SendMail.class);
//定义收件人、发送人、主题等
String to="",from="",host="",filename="",messagetext="",subject="";
boolean debug=false;
//保存发送的文件名
Vector vfile = new Vector(10,10);
//保存发送的正文
Vector vmsg = new Vector(10,10);
public SendMail() {}
public SendMail(String to,String from,String smtpServer,String subject)
{
//初始化收件人、发送人、主题
this.to=to;
this.from=from;
this.host=smtpServer;
this.subject=subject;
}
//收集附加文件
public void attachfile(String fname)
{
vfile.addElement(fname);
}
//收集邮件正文
public void setMessage(String msg)
{
vmsg.addElement(msg);
}
//设置调试标志
public void setDebug(boolean debug)
{
this.debug=debug;
}
//邮件发送函数
public boolean startSend()
{
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
Session session=Session.getDefaultInstance
(props, null);
session.setDebug(debug);
try {
//创建一个消息,并初始化该消息的各项元素
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address={new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
msg.setSubject(subject);
//把message part加入新创建的Multipart
Multipart mp = new MimeMultipart();
// 邮件内容的第一部分
Enumeration emsg=vmsg.elements();
while(emsg.hasMoreElements())
{
messagetext=emsg.nextElement().toString();
MimeBodyPart mbp1=new MimeBodyPart();
mbp1.setText(messagetext);
mp.addBodyPart(mbp1);
}
vmsg.removeAllElements();
// 邮件内容的第二部分
Enumeration efile=vfile.elements();
while(efile.hasMoreElements())
{
MimeBodyPart mbp2=new MimeBodyPart();
filename=efile .nextElement().toString();
FileDataSource fds=new FileDataSource(filename);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
mp.addBodyPart(mbp2);
}
vfile.removeAllElements();
// 把MultiPart加入邮件
msg.setContent(mp);
// 设置邮件头的发送日期
msg.setSentDate(new Date());
// 发送邮件
Transport.send(msg);
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex=mex.getNextException())!=null)
{
ex.printStackTrace();
}
return false;
}
return true;
}//end public void startSend()
public static void main(String[] args)
{
    String topic = "test";
    String sendto = 123@123.com;
   String sendfrom = "123@123.com";
    SendMail sendmail=new SendMail(sendto,"sendfrom","email.123.com",topic);
    sendmail.attachfile("SendMail.java");
    sendmail.attachfile("SendMail.class");
    sendmail.setMessage(topic);
    sendmail.startSend();
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用JavaMail设置代理发送邮件需要进行以下步骤: 1. 创建Properties对象,设置代理主机和端口号: ``` Properties props = new Properties(); props.setProperty("proxySet", "true"); props.setProperty("socksProxyHost", "代理主机"); props.setProperty("socksProxyPort", "代理端口"); ``` 2. 创建Session对象,传入Properties对象: ``` Session session = Session.getInstance(props); ``` 3. 创建Transport对象,连接SMTP服务器: ``` Transport transport = session.getTransport("smtp"); transport.connect("SMTP服务器地址", "SMTP用户名", "SMTP密码"); ``` 4. 创建Message对象,设置邮件内容: ``` Message message = new MimeMessage(session); message.setFrom(new InternetAddress("发件人邮箱")); message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人邮箱")); message.setSubject("邮件主题"); message.setText("邮件内容"); ``` 5. 发送邮件: ``` transport.sendMessage(message, message.getAllRecipients()); ``` 完整代码示例: ``` import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class SendMail { public static void main(String[] args) throws Exception { Properties props = new Properties(); props.setProperty("proxySet", "true"); props.setProperty("socksProxyHost", "代理主机"); props.setProperty("socksProxyPort", "代理端口"); Session session = Session.getInstance(props); Transport transport = session.getTransport("smtp"); transport.connect("SMTP服务器地址", "SMTP用户名", "SMTP密码"); Message message = new MimeMessage(session); message.setFrom(new InternetAddress("发件人邮箱")); message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人邮箱")); message.setSubject("邮件主题"); message.setText("邮件内容"); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } } ``` 需要注意的是,代理主机和端口号需要根据实际情况进行设置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值