编写代码阶段以确定收件人是否来自域

Writing code stage to determine if recipients are from the domain

我需要在 Blue Prism 的代码阶段编写一段代码。我正在处理 Outlook,我当前的对象可以在 Outlook 中发送电子邮件。

但是,我现在需要做的是检查to/cc/bcc中的电子邮件地址是否来自同一域(例如检查所有收件人的电子邮件地址是否以“@abc.com结尾”)。我当前的一段代码是用 C# 编写的。有人知道如何做到这一点吗?

这是我目前拥有的: 我有一个字段的输入参数列表,例如“to, from, cc, bcc, ..., abc_recipients_only”。所有参数均为字符串,“abc_recipient_only”参数为布尔形式。

我目前使用的代码提示“第 14 行的编译器错误:当前上下文中不存在名称“收件人””。

    EmailMessage email = new EmailMessage(service);
    
    to = to.Replace(',',';');
    cc = cc.Replace(',',';');
    bcc = bcc.Replace(',',';');
    
    foreach(var row in to.Split(';')){
        if (abc_recipients_only == true){
            if(Recipient.AddressEntry == "abc.com"){
                email.ToRecipients.Add(row.Trim());
            }
        }
        else{
            if (string.IsNullOrEmpty(row.Trim())) continue;
            email.ToRecipients.Add(row.Trim());
        }
    }
    
    email.SendAndSaveCopy();

假设您的公司正在使用 Exchange,遍历邮件中的所有收件人(MailItem.Recipients 集合)并检查每个地址类型是 "EX" - Recipient.AddressEntry.Type == "EX" 还是 Recipient.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3002001F") == "EX".后者效率更高

代表 Outlook 项目的所有收件人的 MailItem.Recipients property returns a Recipients 集合。因此,您可以遍历集合中的所有项目并检查收件人的域。

使用 Recipients (index) 方法,其中 index 是名称或索引号,return 单个 Recipient 对象。该名称可以是表示显示名称、别名、完整 SMTP 电子邮件地址或收件人手机 phone 号码的字符串。一个好的做法是对邮件消息使用 SMTP 电子邮件地址,对移动消息使用手机 phone 号码。

Recipient.Address 属性 return 是一个表示收件人电子邮件地址的字符串。

如果您遇到类似交换的电子邮件地址,您可以使用 HowTo: Convert Exchange-based email address into SMTP email address 文章中描述的方法。