用java完成邮件发送的详细步骤?代码有更好。。。需不需要构建自己电脑上的服务器啊?

 我来答
jy02231251
2010-12-08 · 超过10用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:27.1万
展开全部
小公司用javamail就行了 大公司看你的操作系统 要是Linux的话推荐用postfix Windows的话推荐用exchange。

附上exchange源码要使用的话需要加包
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

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 Mailer {
private String host;
private String auth;
private String username;
private String domainUser;
private String password;

public boolean send(String[] to, String[] cc, String[] bcc, String subject, String content) throws MessagingException {
Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", auth);
Session s = Session.getInstance(props);
//s.setDebug(true);

MimeMessage message = new MimeMessage(s);

InternetAddress from = new InternetAddress(username);

message.setFrom(from);
//e.printStackTrace();

//message.setFrom(from);

InternetAddress[] Toaddress = new InternetAddress[to.length];
for (int i = 0; i < to.length; i++)
Toaddress[i] = new InternetAddress(to[i]);
message.setRecipients(Message.RecipientType.TO, Toaddress);

if (cc != null) {
InternetAddress[] Ccaddress = new InternetAddress[cc.length];
for (int i = 0; i < cc.length; i++)
Ccaddress[i] = new InternetAddress(cc[i]);
message.setRecipients(Message.RecipientType.CC, Ccaddress);
}

if (bcc != null) {
InternetAddress[] Bccaddress = new InternetAddress[bcc.length];
for (int i = 0; i < bcc.length; i++)
Bccaddress[i] = new InternetAddress(bcc[i]);
message.setRecipients(Message.RecipientType.BCC, Bccaddress);
}
message.setSubject(subject);
message.setSentDate(new Date());

BodyPart mdp = new MimeBodyPart();
mdp.setContent(content, "text/html;charset=utf-8");
Multipart mm = new MimeMultipart();
mm.addBodyPart(mdp);
message.setContent(mm);

message.saveChanges();
Transport transport = s.getTransport("smtp");
transport.connect(host, (null == domainUser) ? username : domainUser, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
return true;
}

public Mailer(String host, String auth, String domainUser, String username, String password) {
super();
this.host = host;
this.auth = auth;
this.domainUser = domainUser;
this.username = username;
this.password = password;
}

public static void main(String[]args){
try {
new Mailer("你的ip", "true", "域名\\域用户", "邮件", "密码").send(new String[] { "281683400@qq.com" }, null, null, "demo_title", "<h3>test</h3>");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
俊俏又柔美灬繁星N
2010-12-08 · TA获得超过466个赞
知道小有建树答主
回答量:583
采纳率:100%
帮助的人:415万
展开全部
很简单,数据库需要增加两个字段,1.是否激活. 2.激活码。
1.在注册完成的同时,生成一个随机数(例如UUID),保存该随机数到激活码字段,同时设置为未激活。
2.把激活地址URL发送邮件给用户填写的邮箱,URL构成为,处理地址+参数=激活码。
3.用户点击该URL,处理该激活码是否和数据库中的相同,相同则设置该用户激活,同时删除激活码字段。 否则返回错误页面

至于发邮件可以用jemail等第三方J包。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式