首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Spring 的java mail的有关问题,怎么伪装发件人

2012-01-28 
Spring 的java mail的问题,如何伪装发件人?帮公司开发了一套360度调查系统,当中用到了Java mail发送邮件给

Spring 的java mail的问题,如何伪装发件人?
帮公司开发了一套360度调查系统,当中用到了Java mail发送邮件给用户。
  这里发现了一个问题,因为我用统一的SMTP服务器发送邮件,而我想每次发送邮件的时候发件人地址都不同,但是我发现无法通过验证,总是报错说发件人验证失败。
  我贴一段我自己写的简易代码,我想问一下如何伪装发件人,如何设置成不用验证发件人的,谢谢
 

Java code
package mail;import org.springframework.mail.javamail.JavaMailSenderImpl;import org.springframework.mail.javamail.MimeMessageHelper;import javax.mail.internet.MimeMessage;import java.util.Properties;import java.util.Date;/*** @author levinhou*/public class SendMail {//邮件发送器public static String Sender(String subject, String msg, String sendTo, String fromMail, String user, String pw, String fromName, String protocol, String host, String port){try{final String username = user;final String pass = pw;//需要认证Properties props = new Properties();props.put("mail.smtp.host", host);props.put("mail.smtp.auth", "true");props.put("mail.transport.protocol", protocol);props.put("mail.from", fromMail);//创建发送器JavaMailSenderImpl sender = new JavaMailSenderImpl();sender.setHost(host);sender.setUsername(username);sender.setPassword(pass);//创建消息MimeMessage message = sender.createMimeMessage();message.addHeader("X-Mailer", "Java Mailer");MimeMessageHelper helper = new MimeMessageHelper(message);helper.setTo(sendTo);helper.setFrom(fromMail, fromName);helper.setSubject(subject);helper.setText(msg);helper.setSentDate(new Date());//开始发送sender.setJavaMailProperties(props);sender.send(message);}catch(Exception e){System.out.println("Error:" + e);return "Failure";}return "Success";}//测试public static void main(String args[])throws Exception{String subject = "测试邮件";//标题String sendTo = "windhall@126.com";//接收者邮件String fromMail = "123@126.com";//发送者邮件String user = "windhall";//发送者用户String pw = "xxxxxxxx";//发送者邮件密码String fromName = "Chen";//发送者名字String protocol = "smtp";//协议String host = "smtp.126.com";//发送主机String port = "25";//端口String msg = "简单邮件发送。";//发送内容String ret = Sender(subject, msg, sendTo, fromMail, user, pw, fromName, protocol, host, port);System.out.println("邮件发送结果:" + ret);}}


代码里的收件人我乱填了一个,就无法通过验证~

[解决办法]
你写复杂了,以下是我的代码,发送人可任意填写.
Java code
import java.net.InetAddress;import java.util.Properties;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;public class SendMail {    /**     * 发送邮件测试     */    public static void main(String[] args) {        try {            // Get system properties            Properties props = System.getProperties();                // 设置smtp邮件服务器            props.put("mail.smtp.host", "192.168.0.61");            props.setProperty("mail.smtp.port", "25");            props.put("mail.smtp.auth", false);                        // 取得连接            Session session = Session.getDefaultInstance(props, null);            Transport transport = session.getTransport("smtp");            transport.connect();                // 邮件定义            MimeMessage mail = new MimeMessage(session);                        mail.addRecipient(Message.RecipientType.TO, new InternetAddress("To@test.com"));            mail.setSubject("邮件标题……");            mail.setText("邮件正文……");            mail.setFrom(new InternetAddress("from@test.com"));            transport.sendMessage(mail, mail.getAllRecipients());               transport.close();                    } catch (Exception e) {            e.printStackTrace();        }    }} 


[解决办法]
那你只能自己装个邮件服务器
[解决办法]
驗不驗證是服務器説了算,你要用JAVAMAIL發郵件,必然是通過網絡中某台服務器代發,例如163,不驗證一定是不通過,要不就自己搭建郵件服務器,自己發
[解决办法]
1楼估计是自己配置的smtp。。。我之前也自己配了个。。发件人可任意指定。。。LZ的应该不可以

热点排行