• mikishiina
  • NEWBIE
  • 0 Points
  • Member since 2012

  • Chatter
    Feed
  • 0
    Best Answers
  • 1
    Likes Received
  • 0
    Likes Given
  • 3
    Questions
  • 4
    Replies

表題の件ですが、メールのエラーログの取得方法について、標準機能である「設定」→「管理者設定」→「監視」→「メールログファイル」での

取得方法はわかるのですが、これをApexを利用して取得することはできないでしょうか。

 

Apexの中で、SingleEmailMessageやMassEmailMessageなどの実行結果を、「Sendemailresult」で送信結果を取得して、

エラーを検知する方法では、「送信する」といった行為がOKかNGかの判定が返ってくるだけで、例えばアドレス間違いなどで

メールが不達になった場合のチェックはできません。

 

【やりたいこと】

・Apexなどを使って、不達となったメールの情報を取得したい。

・取得したデータを元に、どのユーザー宛のメールが不達になったのかをセールスフォース上で表示させたい。

 

※外部のメールクライアントでエラーメールが返ってくることは理解しています。

※salesforce.comドメインのメールをsalesforceのMTAを使って送信し、それがエラーになった場合に、

 salesforce.comドメインのメールアドレスにはエラーメールが受信されない(受信しない)ようにMTA側で

 制御していることはセールスフォースのサポートで確認済み。

 

もし、ご存知の方がいらっしゃいましたら、ご教示いただければと思います。

I have problem.

I am trying to send e-mail using the Apex code with SingleEmailMessage Method.

However, after e-mail transmission, if it is received by a mail client, a system administrator's mail address is added to an address automatically in addition to the specified address.

 

I would like to transmit e-mail only to the specified address,

and  I would like to remove a system administrator's mail address, what should I do?

 

In addition, I need the following.

  • setCcAddresses
  • setBccAddresses
  • setReplyTo
  • setOrgWideEmailAddressId
  • setFileAttachments

 

Therefore,  MassEmailMessage cannot be used.

 

my source code is...

 

public void sendMessage(MailManage__c mmd){
 Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();

 message.setToAddresses(mmd.ToAddress__c);
 message.setCcAddresses(mmd.CCAddress__c);
 message.setBccAddresses(mmd.BCCAddress__c);
 message.setReplyTo(mmd.FromAddress__c);
 message.setOrgWideEmailAddressId(mmd.FromAddressOwe__c);
 User userInfo = [Select u.Id From User u Where u.Profile.Name = 'Administrator'];
 message.setTargetObjectId(userInfo.Id);
 message.setSaveAsActivity(false);
 message.setSubject(mmd.Title__c);
 message.setPlainTextBody(mmd.MainContent__c);

 try{
  System.debug('new Message was sent');
  Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
  System.debug('Message was sent');
 }catch(System.DmlException e){
  System.debug('We caught a DML exception: ' + e.getDmlMessage(0));
 }
}

Outbound Emailを使って、メール送信機能を実装し、送信自体は全く問題ない

のですが、その送信したメールをクライアント側で受信をした際に、何故か必ず

システム管理者のメールアドレスが、宛先に自動的に付け加えられて困って

おります。

 

システム管理者のアドレスが自動的に付け加えられないように、何かしらの設定で

制御することはできるのでしょうか。ご存知の方がいらっしゃいましたら、ご教示お願いいたします。

 

なお、一部のみ抽出していますが、ソースは以下のような感じで、最初の宛先の部分の「toList」には

指定したアドレスしか入っていないことは確認しています。

 

public void sendMessage(MailManage__c mmd){
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();

// 宛先アドレス
List<String> toList = new List<String>();
toList.add(mmd.ToAddress__c);
message.setToAddresses(toList);

 

// 送信者アドレス(返信先)
message.setReplyTo(mmd.FromAddress__c);

 

// 送信者名

message.setOrgWideEmailAddressId(mmd.FromAddressOwe__c);

 

// メール送信者ID
message.setTargetObjectId(userInfo.Id);
message.setSaveAsActivity(false);

// 件名
message.setSubject(mmd.Title__c);

// 本文を設定
message.setPlainTextBody(mmd.MainContent__c);

// メール送信実行
try{
System.debug('new Message is sent');
Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
System.debug('Message was sent');
}catch(System.DmlException e){
System.debug('We caught a DML exception: ' + e.getDmlMessage(0));
}

}

表題の件ですが、メールのエラーログの取得方法について、標準機能である「設定」→「管理者設定」→「監視」→「メールログファイル」での

取得方法はわかるのですが、これをApexを利用して取得することはできないでしょうか。

 

Apexの中で、SingleEmailMessageやMassEmailMessageなどの実行結果を、「Sendemailresult」で送信結果を取得して、

エラーを検知する方法では、「送信する」といった行為がOKかNGかの判定が返ってくるだけで、例えばアドレス間違いなどで

メールが不達になった場合のチェックはできません。

 

【やりたいこと】

・Apexなどを使って、不達となったメールの情報を取得したい。

・取得したデータを元に、どのユーザー宛のメールが不達になったのかをセールスフォース上で表示させたい。

 

※外部のメールクライアントでエラーメールが返ってくることは理解しています。

※salesforce.comドメインのメールをsalesforceのMTAを使って送信し、それがエラーになった場合に、

 salesforce.comドメインのメールアドレスにはエラーメールが受信されない(受信しない)ようにMTA側で

 制御していることはセールスフォースのサポートで確認済み。

 

もし、ご存知の方がいらっしゃいましたら、ご教示いただければと思います。

Outbound Emailを使って、メール送信機能を実装し、送信自体は全く問題ない

のですが、その送信したメールをクライアント側で受信をした際に、何故か必ず

システム管理者のメールアドレスが、宛先に自動的に付け加えられて困って

おります。

 

システム管理者のアドレスが自動的に付け加えられないように、何かしらの設定で

制御することはできるのでしょうか。ご存知の方がいらっしゃいましたら、ご教示お願いいたします。

 

なお、一部のみ抽出していますが、ソースは以下のような感じで、最初の宛先の部分の「toList」には

指定したアドレスしか入っていないことは確認しています。

 

public void sendMessage(MailManage__c mmd){
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();

// 宛先アドレス
List<String> toList = new List<String>();
toList.add(mmd.ToAddress__c);
message.setToAddresses(toList);

 

// 送信者アドレス(返信先)
message.setReplyTo(mmd.FromAddress__c);

 

// 送信者名

message.setOrgWideEmailAddressId(mmd.FromAddressOwe__c);

 

// メール送信者ID
message.setTargetObjectId(userInfo.Id);
message.setSaveAsActivity(false);

// 件名
message.setSubject(mmd.Title__c);

// 本文を設定
message.setPlainTextBody(mmd.MainContent__c);

// メール送信実行
try{
System.debug('new Message is sent');
Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
System.debug('Message was sent');
}catch(System.DmlException e){
System.debug('We caught a DML exception: ' + e.getDmlMessage(0));
}

}