为每个收件人发送包含不同内容的单个电子邮件(使用cc字段)

时间:2016-09-13 22:48:53

标签: c# smtp smtpclient

在你驳回这个问题之前,因为它没有任何意义"并且"它是不可能的"请听我说:

问题:

我们在使用我们的系统发送的每封电子邮件中实施跟踪像素(我可下载的带有唯一网址的GIF文件),这有助于我们跟踪电子邮件的打开情况。这样做的问题是,当我们cc几个收件人时,跟踪像素被下载,我们无法检测已打开此电子邮件,因为所有电子邮件都是CC,内容必须是相同。

可能的解决方案:

如果SMTP服务器要控制注入跟踪像素,则SMTP可以通过使用不同的URL发布每个收件人,将邮件正文从收件人更改为收件人,假装所有收件人都收到相同的邮件。

然而,使用公共SMTP服务器(例如Google的SMTP)似乎不太可行,但有些公司(例如AirMail)仍然能够这样做,发送不同的内容(cc消息中每个收件人的跟踪URL不同)。当我检查电子邮件标题时,它们似乎是从谷歌SMTP服务器发送的(客户帐户使用gmail.com帐户)。这怎么可能?

2 个答案:

答案 0 :(得分:0)

他们正在为每个人创建一个独特的信息。没有什么真正神奇的。通常是某种类型的邮件合并。

答案 1 :(得分:-1)

虽然我没有适合您的C#解决方案,但这是一个很好的VBA解决方案,使用Excel。

Sub Send_Files()
'Working in Excel 2000-2016
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
    Dim OutApp As Object
    Dim OutMail As Object
    Dim sh As Worksheet
    Dim cell As Range
    Dim FileCell As Range
    Dim rng As Range

    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With

    Set sh = Sheets("Sheet1")

    Set OutApp = CreateObject("Outlook.Application")

    For Each cell In sh.Columns("B").Cells.SpecialCells(xlCellTypeConstants)

        'Enter the path/file names in the C:Z column in each row
        Set rng = sh.Cells(cell.Row, 1).Range("C1:Z1")

        If cell.Value Like "?*@?*.?*" And _
           Application.WorksheetFunction.CountA(rng) > 0 Then
            Set OutMail = OutApp.CreateItem(0)

            With OutMail
                .to = cell.Value
                .Subject = "Testfile"
                .Body = "Hi " & cell.Offset(0, -1).Value

                For Each FileCell In rng.SpecialCells(xlCellTypeConstants)
                    If Trim(FileCell) <> "" Then
                        If Dir(FileCell.Value) <> "" Then
                            .Attachments.Add FileCell.Value
                        End If
                    End If
                Next FileCell

                .Send  'Or use .Display
            End With

            Set OutMail = Nothing
        End If
    Next cell

    Set OutApp = Nothing
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

http://www.rondebruin.nl/win/s1/outlook/amail6.htm