メール サービスで Javamail を使用しています。これは私のコードです:
public static void send( final String username, final String password, String recipientEmail, String ccEmail, String title, String message,
String from, String host, String port )
throws AddressException, MessagingException
{
Session session;
Properties props = System.getProperties();
props.setProperty( "mail.smtps.host", host );
props.setProperty( "mail.smtp.port", port );
session = Session.getInstance( props, null );
// -- Create a new message --
final MimeMessage msg = new MimeMessage( session );
// -- Set the FROM and TO fields --
msg.setFrom( new InternetAddress( username ) );
msg.setRecipients( Message.RecipientType.TO, InternetAddress.parse( recipientEmail, false ) );
if ( ccEmail.length() > 0 )
{
msg.setRecipients( Message.RecipientType.CC, InternetAddress.parse( ccEmail, false ) );
}
msg.setSubject( title, "utf-8" );
msg.setFrom( new InternetAddress( from ) );
msg.setText( message, "utf-8" );
msg.setSentDate( new Date() );
SMTPTransport t = (SMTPTransport) session.getTransport( "smtps" );
t.connect( host, username, password );
t.sendMessage( msg, msg.getAllRecipients() );
t.close();
}
このメソッドを次のように呼び出します - ユーザー名: mailtest - from: My Super Company <- これは私のドメインです - ホスト: mail.host.com <- これは私のメール プロバイダーです
javamail が私のサービスにmailtest@mysupercompany.comとしてログインしようとして失敗します。たとえば、test@mysupercompany.comから提供すると、正常に動作します。
コンソールでログを確認したところ、ユーザー mailtest@mysupercompany.com が存在しないと表示されています。javamail が mailtest@mysupercompany.com でログインしようとするようなものですが、私のユーザー名mailtestのみを使用する必要があります。
ユーザー名と同じなのに from を使用しているのはなぜですか?