有关javamail发邮件问题,如何指定发件人???

axplayer 2002-11-30 04:43:01
大家好,希望大家给我些意见!
一直以来我用javamail发邮件时,遇到一个辣手的问题,就是无法指定发件人邮箱, 我不想发件人地址被定死,以下是程序片段,希望大家指正。
try{
Properties props = new Properties();

Store store;
Transport transport;


props.put("mail.smtp.host", "smtp.21cn.com");
props.put("mail.smtp.auth","true");
PasswordAuthentication pop = popAuthenticator.performCheck("flyfoxer","12345");
Session sendMailSession=Session.getInstance(props,popAuthenticator);
Message newMessage = new MimeMessage(sendMailSession);
//newMessage.setFrom(new InternetAddress(request.getParameter("from")));
newMessage.setFrom(new InternetAddress("flyfoxer@21cn.com"));

//问题就在这里,我不能指定newMessage.setFrom中的发件人地址,我不想用flyfoxer@21cn.com,想用其它信箱。希望高手帮忙,谢谢
newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("flyfoxer@263.net"));

newMessage.setSubject(str.GBKToISO8859(subjectstr));
newMessage.setSentDate(new java.util.Date());
newMessage.setText(str.GBKToISO8859(text));

transport = sendMailSession.getTransport("smtp");
transport.send(newMessage);
}
catch(MessagingException m)
{
out.println(m.toString());

}
现在问题焦点就在如何指定newMessage.setFrom中发件人的地址,不想用指定的邮箱,想用其它任何邮箱做发邮件人信箱,或者匿名,不知可否?
希望帮帮我,一直困扰了我半年多啊
...全文
636 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
beming 2002-12-05
  • 打赏
  • 举报
回复
这是邮件服务商的smtp认证的必然,为避免垃圾邮件的发送,所以如果你发信人是其他的服务器的话,它就不认啦,不帮你转发的
zxhong 2002-12-05
  • 打赏
  • 举报
回复
发件人用aaa@163.net
那host就改为:smtp.163.net
为什么还用smtp.21cn.com
qzm98 2002-12-05
  • 打赏
  • 举报
回复 1
楼上的兄弟,这个很简单的,可以实现的,你只要在
newMessage.setFrom(new InternetAddress("flyfoxer@21cn.com",from));
注意from是变量,你可以从数据库里取出来,给我高分啊,这个问题我也遇到过,希望对你有帮助!
axplayer 2002-12-03
  • 打赏
  • 举报
回复
您的意思,应该如代发,这点小弟不懂啊,请详细一些!
如果一个会员在我们网站上注册了一个会员用的信箱是aaa@163.net
其它人向它在线询价时,发件人不可能是aaa@163.net,因为我用的是smtp.21cn.com
的,发件人我想用aaa@163.net
请大家指教·!1
zxhong 2002-12-02
  • 打赏
  • 举报
回复
那就代发一下吗!

我是说不可能出现:
163.net.263.net
这种形式的。
axplayer 2002-12-02
  • 打赏
  • 举报
回复
有啊,主要是我们会不提供免费信箱,信箱是会员自己的,所以用我们在线发询价时,就会出现在我上面的问题,收件人只能指定为一个,不管是那家公司询价,收件人都是我们公司的,这点很可恶,希望高手帮帮我!
zxhong 2002-12-02
  • 打赏
  • 举报
回复
有这样的吗!
axplayer 2002-12-01
  • 打赏
  • 举报
回复
如果我用smtp.21cn.com来发邮件,但是我指定收件人信箱时,想用flyfoxer@263.net或者flyfoxer@163.net,这样好像不行
还有用户名+(从smtp.21cn.com中)取21cn.com,这个不怎么理解,可否详细些,谢谢·!
zxhong 2002-12-01
  • 打赏
  • 举报
回复
用户名+(从smtp.21cn.com中)取21cn.com

axplayer 2002-12-01
  • 打赏
  • 举报
回复
这样不行的,如果你用的SMTP邮件服务器是smtp.21cn.com,那么
newMessage.setFrom(new InternetAddress(from));
from只能是以@21cn.com开头的邮箱,如果换成其它邮箱就会报错,会不会是要认证的原因,希望高手指正
zxhong 2002-12-01
  • 打赏
  • 举报
回复
String from=request.getParameter("from");/提交表单
newMessage.setFrom(new InternetAddress(from));

axplayer 2002-12-01
  • 打赏
  • 举报
回复
高手帮我啊,一直以来没有解决的问题,谢谢了!
axplayer 2002-12-01
  • 打赏
  • 举报
回复
高手快帮我呀!谢谢!
axplayer 2002-12-01
  • 打赏
  • 举报
回复
那如果它是163.net.263.net的邮箱呢,这样不是发不出去了!!!
zxhong 2002-12-01
  • 打赏
  • 举报
回复
注册人不是有用户帐号,密码吗!

也就是说该注册人拥有了使用该host的权利,你只是帮它发送!
axplayer 2002-12-01
  • 打赏
  • 举报
回复
如果要改变动态host,那像不太现实,比如在我网站注册的一个会员,他的邮箱是abc@abc.com,那么我要把host设置为abc.com,但是密码不知道啊,怎么办?
zxhong 2002-12-01
  • 打赏
  • 举报
回复
现在很多都是要验证的
说明它可以动态改变host
axplayer 2002-12-01
  • 打赏
  • 举报
回复
谢谢以上各位朋友的帮助,感激不尽
但是象阿里巴巴他们那个在线询价是如何做的,我想他们的邮件服务器应该是要验证吧,可是他们却可以设置发件人不为@alibaba.com,不知道是如何实现的!
gyn 2002-12-01
  • 打赏
  • 举报
回复
如果谁想发邮件必须输入两个参数:发件人的帐户和smtp服务器名称
如果不想输入smtp服务器也行,就自己做一个没有用户验证的smtp服务器。
用户验证的意义在于不是本邮件服务器的用户不允许通过本邮件服务器发送邮件,这也是防范垃圾邮件减少服务器负荷的一种方法。
zxhong 2002-12-01
  • 打赏
  • 举报
回复
那不可能实现的。
除非你也动态的改变host
加载更多回复(7)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧