0

この問題について数日間検索し、このサイトや他のサイトで多くの質問を参照しましたが、すべて役に立ちませんでした. これを除いて、他のすべての機能が動作しています。Visual Studio に表示されるツールチップも参照しましたが、何も機能していないようです。私のコードはエラーを生成しませんが、電子メールにも添付ファイルがありません。これは、参照として使用する私のコードの一部です。

'Add Attachments from alist array'
If alist.Count > 1 Then
    For x As Integer = 1 To alist.Count - 1
        Quick_Mail.email.Attachments.Add(New System.Net.Mail.Attachment(alist(x).ToString))
    Next
End If

添付ファイルを追加する別のフォームがあるため、このようにしています。添付ファイルへのパスは、alist 配列に文字列として格納されます。新しい添付ファイルが追加されるたびに、alist が保持されます。これにより、最初の位置が空になるため、x を 1 に初期化します。

残りのメール設定のコードは次のとおりです

Public Shared email As New MailMessage()
Dim smtp As SmtpClient = New SmtpClient
smtp.Credentials = New Net.NetworkCredential(user, pass)
smtp.Host = host
smtp.Port = port
smtp.EnableSsl = False
email = New MailMessage()
email.From = New MailAddress(user)
email.To = txt_to.text
email.CC = txt_cc.text
email.BCC = txt_bcc.text
email.Subject = txt_subject.Text
email.Body = txt_message.Text

添付フォームが参照できるように、電子メールを公開および共有しています。

どんな支援も大歓迎です。前もって感謝します。

4

1 に答える 1

1

メールを送信するコードの前に、ループを呼び出して添付ファイルを追加するとします。この場合、変数 email を再度初期化すると、以前の添付ファイルが失われます。

Public Shared email As New MailMessage()
Dim smtp As SmtpClient = New SmtpClient
smtp.Credentials = New Net.NetworkCredential(user, pass)
smtp.Host = host
smtp.Port = port
smtp.EnableSsl = False
' THIS LINE REINITIALIZE THE EMAIL AND KILLS THE ATTACHMENTS 
' email = New MailMessage()
email.From = New MailAddress(user)
email.To = txt_to.text
email.CC = txt_cc.text
email.BCC = txt_bcc.text
email.Subject = txt_subject.Text
email.Body = txt_message.Text

ただし、この種の問題のために共有変数を保持することは常に問題になります。このコードをサブで分離し、添付ファイルのリストをこのサブに渡して、Shared 変数を公開したままにしないのはなぜですか?

Public Sub SendMail(alist as List(Of String))
    Dim email = New MailMessage()
    Dim smtp = New SmtpClient()

    For x As Integer = 1 To alist.Count - 1
        email.Attachments.Add(New Attachment(alist(x).ToString))
    Next

    smtp.Credentials = New Net.NetworkCredential(user, pass)
    smtp.Host = host
    smtp.Port = port
    smtp.EnableSsl = False
    email.From = New MailAddress(user)
    email.To = txt_to.text
    email.CC = txt_cc.text
    email.BCC = txt_bcc.text
    email.Subject = txt_subject.Text
    email.Body = txt_message.Text
    smtp.Send(email)
End Sub
于 2013-07-13T20:02:42.390 に答える