无法使用system.net.mail从VB表单发送邮件

斯特罗斯

我们公司拥有一个呼叫中心,该PC被锁定(无法访问互联网,电子邮件,办公应用程序),并且需要他们能够从自己的计算机上记录支持记录。

我创建了一个VB Windows窗体应用程序,该应用程序从用户那里获取一些信息(名称,电子邮件,扩展名,主题和问题描述)以及从WMI收集的系统信息。

我打算通过电子邮件将所有这些信息发送到我们的服务台,sys信息将使我们能够识别硬件问题等。

但是,当尝试发送邮件时。它只是不起作用。

我们有一个smtp中继,它允许匿名电子邮件中继,并且不需要用户凭据。

一旦我获得了基本的测试邮件,我将开始使用从用户那里获得的信息来填充邮件。但是,该邮件当前引发异常,根本不发送。

注意当涉及到VB和.net时,我是一个绝对的初学者,因为我来自linux / php背景

下面是我的代码:

Imports System.Management
Imports System.Management.Instrumentation
Imports System.Net.Mail

Public Class Form1

    Private Property strComputer As String
    Private Property objWMIService As Object
    Private Property colItems As Object
    Private Property colComputers As Object
    Private Property strComputerRole As String
    Private Property colDisks As Object
    Private Property colOperatingSystems As Object
    Private Property IPConfigSet As Object

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim response As MsgBoxResult
        response = MsgBox("Are you sure you want to exit?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirm")
        If response = MsgBoxResult.Yes Then
            Me.Dispose()
        ElseIf response = MsgBoxResult.No Then
            Exit Sub
        End If
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim strName As String
        Dim strDept As String
        Dim strEmail As String
        Dim strExt As String
        Dim strDesc As String
        Dim strAffect As String
        Dim strSubject As String

        strName = TextBox1.Text
        strDept = TextBox2.Text
        strEmail = TextBox3.Text
        strExt = TextBox4.Text
        strSubject = TextBox6.Text
        strDesc = RichTextBox1.Text
        strAffect = TextBox5.Text

        strComputer = "."
        objWMIService = GetObject("winmgmts:" _
            & "{impersonationLevel=impersonate}!\\" _
            & strComputer & "\root\cimv2")
        colItems = objWMIService.ExecQuery _
            ("Select * from Win32_ComputerSystem")
        For Each objItem In colItems
            TextBox7.Text = objItem.Name
            TextBox8.Text = objItem.Manufacturer
            TextBox9.Text = objItem.Model
            TextBox11.Text = objItem.TotalPhysicalMemory
        Next
        colComputers = objWMIService.ExecQuery _
    ("Select DomainRole from Win32_ComputerSystem")
        For Each objComputer In colComputers
            Select Case objComputer.DomainRole
                Case 0
                    strComputerRole = "Standalone Workstation"
                Case 1
                    strComputerRole = "Member Workstation"
                Case 2
                    strComputerRole = "Standalone Server"
                Case 3
                    strComputerRole = "Member Server"
                Case 4
                    strComputerRole = "Backup Domain Controller"
                Case 5
                    strComputerRole = "Primary Domain Controller"
            End Select
            TextBox10.Text = strComputerRole
        Next
        colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
        For Each objItem In colItems
            TextBox12.Text = objItem.Manufacturer
            TextBox13.Text = objItem.Name
            TextBox14.Text = objItem.MaxClockSpeed & " MHz"
        Next
        colItems = objWMIService.ExecQuery("Select * from Win32_BIOS")
        For Each objItem In colItems
            TextBox15.Text = objItem.Version
            TextBox16.Text = objItem.SerialNumber
        Next
        colItems = objWMIService.ExecQuery("Select * from Win32_VideoController")
        For Each objItem In colItems
            TextBox17.Text = objItem.Name
        Next
        colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DeviceID = ""C:""")
        For Each objDisk In colDisks
            TextBox18.Text = Math.Round(objDisk.Size / 1073741824) & " GB"
            TextBox19.Text = Math.Round(objDisk.Freespace / 1073741824) & " GB"
        Next
        colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
        For Each objOperatingSystem In colOperatingSystems
            TextBox20.Text = objOperatingSystem.Caption & "  " & objOperatingSystem.Version
            TextBox21.Text = objOperatingSystem.ServicePackMajorVersion & "." & objOperatingSystem.ServicePackMinorVersion
        Next
        Dim moIP As ManagementObject

        Dim myNet = New ManagementObjectSearcher _
        ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

        For Each moIP In myNet.Get
            ' Eg: Display IP address in Message Box
            TextBox22.Text = moIP("IPAddress")(0)
        Next

        Dim mail As New MailMessage()
        mail.To.Add("[email protected]")
        mail.From = New MailAddress(strEmail)

        Dim smtp As New SmtpClient()
        smtp.Host = "relay.company.local"
        smtp.EnableSsl = False

        mail.Subject = strSubject
        mail.Body = strDesc
        smtp.Send(mail)

    End Sub

    Private Function Wscript() As Object
        Throw New NotImplementedException
    End Function

    Private Function IsNull(p1 As Object) As Boolean
        Throw New NotImplementedException
    End Function


End Class

更新:下面是一个例外

An unhandled exception of type 'System.Net.Mail.SmtpException' occurred in System.dll

Additional information: Service not available, closing transmission channel. The server response was: 4.3.2 Service not available, closing transmission channel
史蒂文斯

您可能缺少一些细节。以下是可帮助您的代码段:

    '...

    'for when not using default credentials
    Dim SMTP_Credentials As System.Net.NetworkCredential = New System.Net.NetworkCredential
    SMTP_Credentials.UserName = "UserName"
    SMTP_Credentials.Password = "Password"


    Using SMTP_Mail As New Net.Mail.SmtpClient
        With SMTP_Mail
            .EnableSsl = False
            .Host = "IP"  'ip address of smtp client
            .Port = 25  'by default SSL does not use port 25 (use port 587 for SSL)
            .UseDefaultCredentials = True
            If Not .UseDefaultCredentials Then .Credentials = SMTP_Credentials
            .Send(mailMsg) 'send email.
        End With
    End Using

    '...

我建议您先使用默认凭据设置。我发现几乎从来没有像预期的那样设置过这个...不要依赖默认设置,除非您是服务器的控制者,否则默认设置是标准的...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在vb.net中发送多个邮件

来自分类Dev

使用System.Net.Mail加速通过smtp服务器发送多封电子邮件

来自分类Dev

使用System.Net.Mail.SmtpClient将电子邮件发送到通讯组列表

来自分类Dev

System.Net.Mail新MailMessage随机发送重复的电子邮件吗?

来自分类Dev

发送没有Outlook或System.Net.Mail的电子邮件

来自分类Dev

用System.Net.Mail.MailMessage发送的电子邮件中的编码不正确

来自分类Dev

System.Net.Mail新MailMessage随机发送重复的电子邮件吗?

来自分类Dev

.Net VB电子邮件表单由于某种原因两次发送

来自分类Dev

无法使用mail()php发送邮件?

来自分类Dev

无法使用php mail()函数发送邮件

来自分类Dev

无法使用 php mail() angular 发送邮件

来自分类Dev

使用VB.Net通过电子邮件发送表格

来自分类Dev

如何使用Outlook库在vb.net中发送/接收电子邮件

来自分类Dev

使用VB.Net通过电子邮件发送表格

来自分类Dev

我如何摆脱使用VB.NET发送的电子邮件输出中的'='符号

来自分类Dev

如何使用vb.net中的默认电子邮件客户端发送带有附件的电子邮件

来自分类Dev

无法在ASP.NET中发送邮件?

来自分类Dev

使用System.Net.Mail.MaiMessage和C#发送时,如何防止HTML电子邮件引用可打印的报价

来自分类Dev

使用wp_mail()将带有表单变量的电子邮件发送到电子邮件

来自分类Dev

使用ASP.Net vNext发送邮件

来自分类Dev

使用VB.net发送收到的SMS

来自分类Dev

使用 VB.Net 发送 Post 请求

来自分类Dev

无法使用 java mail api 从 jsp webapp 发送邮件

来自分类Dev

使用python flask_mail msg.body =“”通过电子邮件发送多个html表单字段的数据

来自分类Dev

使用mail()发送电子邮件

来自分类Dev

检查使用mail命令发送的邮件

来自分类Dev

使用SendAsync时如何在VB中处置System.Net.Mail.MailMessage

来自分类Dev

通过VB.net发送电子邮件

来自分类Dev

vb.net发送带有图片的电子邮件

Related 相关文章

  1. 1

    无法在vb.net中发送多个邮件

  2. 2

    使用System.Net.Mail加速通过smtp服务器发送多封电子邮件

  3. 3

    使用System.Net.Mail.SmtpClient将电子邮件发送到通讯组列表

  4. 4

    System.Net.Mail新MailMessage随机发送重复的电子邮件吗?

  5. 5

    发送没有Outlook或System.Net.Mail的电子邮件

  6. 6

    用System.Net.Mail.MailMessage发送的电子邮件中的编码不正确

  7. 7

    System.Net.Mail新MailMessage随机发送重复的电子邮件吗?

  8. 8

    .Net VB电子邮件表单由于某种原因两次发送

  9. 9

    无法使用mail()php发送邮件?

  10. 10

    无法使用php mail()函数发送邮件

  11. 11

    无法使用 php mail() angular 发送邮件

  12. 12

    使用VB.Net通过电子邮件发送表格

  13. 13

    如何使用Outlook库在vb.net中发送/接收电子邮件

  14. 14

    使用VB.Net通过电子邮件发送表格

  15. 15

    我如何摆脱使用VB.NET发送的电子邮件输出中的'='符号

  16. 16

    如何使用vb.net中的默认电子邮件客户端发送带有附件的电子邮件

  17. 17

    无法在ASP.NET中发送邮件?

  18. 18

    使用System.Net.Mail.MaiMessage和C#发送时,如何防止HTML电子邮件引用可打印的报价

  19. 19

    使用wp_mail()将带有表单变量的电子邮件发送到电子邮件

  20. 20

    使用ASP.Net vNext发送邮件

  21. 21

    使用VB.net发送收到的SMS

  22. 22

    使用 VB.Net 发送 Post 请求

  23. 23

    无法使用 java mail api 从 jsp webapp 发送邮件

  24. 24

    使用python flask_mail msg.body =“”通过电子邮件发送多个html表单字段的数据

  25. 25

    使用mail()发送电子邮件

  26. 26

    检查使用mail命令发送的邮件

  27. 27

    使用SendAsync时如何在VB中处置System.Net.Mail.MailMessage

  28. 28

    通过VB.net发送电子邮件

  29. 29

    vb.net发送带有图片的电子邮件

热门标签

归档