JavaMailがメールを別名で送信する方法

5072 ワード

フィッシングメールの詐欺では、メール送信者に別名を付けるのが最も一般的ですが、メール送信者の名前がメール受信者によく知られている別名に近いと、釣りの成功率が2倍になります.
1.簡単メール
JAVAはJavaMailツールパッケージを使用してメールを送信し、そのMAVAN依存度は以下の通りである.
<dependency>
    <groupId>org.springframeworkgroupId>
    <artifactId>spring-context-supportartifactId>
    <version>1.5.6version>
dependency>

すべてのメールサーバはSMTPプロトコルを採用し、メール送信を行い、新浪の無料メールボックスを例に、完全なJavaMailSender構成コードは以下の通りである.
@Bean
public JavaMailSenderImpl mailSender() {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setDefaultEncoding("UTF-8");
    mailSender.setHost("smtp.sina.com");
    //           ,        
    mailSender.setUsername("[email protected]");
    //          
    mailSender.setPassword("******");
    mailSender.setProtocol("smtp");
    mailSender.setPort(25);
    return mailSender;
}

別名を追加する場所は、MailMessage、つまりメールテンプレートです.次のようになります.
@Bean
public SimpleMailMessage emailMessage() {
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("IT    ");
    message.setSubject("    ");
    return message;
}

操作は非常に簡単で、フォーマットは「別名」であり、中国語名をサポートしていることがわかります.
2.マルチメディアメール
上記の方法は簡単なテキストメールにのみ適しており、マルチメディアコンテンツをロードする場合は、上記の方法がエラーを報告し、エラー情報は以下の通りです.
com.sun.mail.smtp.SMTPSendFailedException: 553 Envolope sender mismatch with header from..
    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2267)
    at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:2045)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1260)
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:448)

解決策は面倒で、別名を符号化しなければならない.コードは以下の通りである.
String from = "[email protected]";
String alias = "";    
try {
    //         
    alias=javax.mail.internet.MimeUtility.encodeText("IT    ");    
} catch (UnsupportedEncodingException e) {    
    e.printStackTrace();    
}     
mm.setFrom(new InternetAddress(alias + " +from+">")); 

急いでやってみましょう.私が発見したように、企業内のネットにメールを送ると、より良い効果があります.