如何在不询问发件人帐户的情况下发送邮件?

时间:2013-10-17 15:54:22

标签: vb.net visual-studio email outlook

我正在尝试创建一个将邮件发送到某个电子邮件帐户的VB.NET应用程序,该帐户的域名不是gmail,hotmail等。它属于我工作的公司。 我的问题是,Outlook提示警告说“程序正试图代表您发送电子邮件......”并且需要单击才能发送邮件(这是因为它使用当前的PC用户帐户发送邮件) 。我需要让它自动化(不需要点击)

由于这是我第一次这样做,我必须问一下,如果没有发件人帐户,是否有办法发送邮件?所以我不需要请求允许发送邮件或在代码中写入任何密码。或者,如果不可能至少有一种方法可以让我的.exe“受信任”,而不是执行它的公司内的任何PC。

我必须在代码中更改哪些行才能跳过该消息?

 Dim OutApp As Object
        Dim OutMail As Object
        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet
        Dim date As String
        Dim proc As System.Diagnostics.Process    

        For Each proc In System.Diagnostics.Process.GetProcessesByName("EXCEL")
            If proc.MainWindowTitle.Trim.Length = 0 Then
                proc.Kill()
            End If
        Next

        xlApp = New Excel.ApplicationClass
        xlWorkBook = xlApp.Workbooks.Open("\\file.xlsm")
        xlWorkSheet = xlWorkBook.Worksheets("sheet")

        Try
            xlWorkSheet.Range("E4").Select()
            xlWorkSheet.Range("E4").Activate()
            date = xlApp.ActiveCell.Value

            Do While Convert.ToString(xlApp.ActiveCell.Value) <> ""
               'The mail part start here
                If (DateTime.Today - CDate(date)).Days = 180 Then
                    OutApp = CreateObject("Outlook.Application")
                    OutMail = OutApp.CreateItem(0)

                    'On Error Resume Next
                    With OutMail
                        .To = "xxxx@xxxx.com" 
                        .CC = ""
                        .BCC = ""
                        .Subject = "subject"
                        .Body = "text"
                        .Send()
                    End With
                    ' On Error GoTo 0

                    OutMail = Nothing
                    OutApp = Nothing

                End If

                xlApp.ActiveCell.Offset(1, 0).Select()
                date = xlApp.ActiveCell.Value

            Loop
        Catch ex As Exception

            MsgBox(ex.ToString())           

        End Try

这是一个控制台应用,所以这里没有web.config。 请帮忙。

2 个答案:

答案 0 :(得分:0)

您的选择是:
1.安装最新的防病毒应用程序
2.编写COM插件而不是外部应用程序
3.使用扩展MAPI(仅限C ++或Delphi)
4. Redemption(可从任何语言访问)

答案 1 :(得分:0)

您可以尝试使用第三方电子邮件服务提供商,例如Amazon SES,SendGrid等。然后,使用它们提供的SMTP或API,您可以从任何电子邮件地址发送邮件,但请注意,您只需一次授权电子邮件地址。 / p>

他们通常会发送一封电子邮件,其中包含指向该电子邮件地址的链接,您只需单击它即可授权该地址。