Hi,
I know how to send emails in .Net 2.0, but I can not send one with multiple email recipients in the “to” field.
If possible I would like to specify display names for all recipients in the “to” field but this is not required.
Hi,
I know how to send emails in .Net 2.0, but I can not send one with multiple email recipients in the “to” field.
If possible I would like to specify display names for all recipients in the “to” field but this is not required.
.Net 2.0 send email with multiple “To” recipients
kazor
Just realized this was posted last October. I can't believe this still hasn't been revised in the documentation!
This is the only thing that worked for me:
mailMessage.To.Add("<add1@mail.com>,<add2@mail.com>")
You may pass it as a string.
momak
MailAddress to1 = new MailAddress("address2@xxx.com;","name1");
MailAddress to2 = new MailAddress("address3@xxx.com","name2");
Thats not the right way to add multiple recipients
use the example I used above.
PLUS you are using a ; at the end of the first mail address.
BubbleGum
Dim emailgroup As String
emailgroup = ListBox1.SelectedValue.ToString
'Create a new MailMessage object and specify the "From" and "To" addresses Dim fromAddress As New Net.Mail.MailAddress(info@learnbartending.com, "Jeff ") Dim toAddress As New Net.Mail.MailAddress("emailgroup") Dim msg As New Net.Mail.MailMessage(fromAddress, toAddress) Dim Email As New System.Net.Mail.MailMessage(fromAddress, toAddress)Bdy
I had the same problem, rather than change all of my code, I changed my main mail routine as follows.
This works for me, let me know if you have any questions.
Public Function SendEMail(ByVal strFrom As String, ByVal strTo As String, ByVal strCC As String, ByVal strBcc As String, ByVal strSubject As String, ByVal strBody As String, Optional ByVal strAttachment As String = "", Optional ByVal strBodyType As String = "") As String
Try
Dim MailMsg As New MailMessage
MailMsg.From = New MailAddress(strFrom)
If strTo <> "" Then
Dim strToArray As String()
strToArray = strTo.Split(";")
Dim ToInt As Integer = strToArray.Length
Dim Tocount As Integer = 0
While Tocount < ToInt
MailMsg.To.Add(New MailAddress(strToArray(Tocount)))
Tocount = Tocount + 1
End While
Else
Return "error; No To Adress Specified"
End If
If strCC <> "" Then
Dim strccArray As String()
strccArray = strCC.Split(";")
Dim ccInt As Integer = strccArray.Length
Dim ccCount As Integer = 0
While ccCount < ccInt
MailMsg.CC.Add(New MailAddress(strccArray(ccCount)))
ccCount = ccCount + 1
End While
End If
If strBcc <> "" Then
Dim strBccArray As String()
strBccArray = strBcc.Split(";")
Dim BccInt As Integer = strBccArray.Length
Dim BccCount As Integer = 0
While BccCount < BccInt
MailMsg.Bcc.Add(New MailAddress(strBccArray(BccCount)))
BccCount = BccCount + 1
End While
End If
MailMsg.Subject = strSubject
MailMsg.Body = strBody
If strBodyType <> "" Then
Select Case LCase(strBodyType)
Case "html"
MailMsg.IsBodyHtml = True
Case "text"
MailMsg.IsBodyHtml = False
End Select
End If
If strAttachment <> "" Then
Dim strAttachmentArray As String()
strAttachmentArray = strAttachment.Split(";")
Dim AttachmentInt As Integer = strAttachmentArray.Length
Dim AttachmentCount As Integer = 0
While AttachmentCount < AttachmentInt
MailMsg.Attachments.Add(New Attachment(strAttachmentArray(AttachmentCount)))
AttachmentCount = AttachmentCount + 1
End While
End If
Dim MailServerName As String = "PutYourServerNameHere"
Dim mSmtpClient As New SmtpClient
mSmtpClient.Host = MailServerName
Try
mSmtpClient.Send(MailMsg)
Catch objException As Exception
SendNotificationMsg = objException.Message
End Try
mSmtpClient = Nothing
For Each aAttach As Attachment In MailMsg.Attachments
aAttach.Dispose()
Next
MailMsg.Attachments.Dispose()
MailMsg.Dispose()
MailMsg = Nothing
Catch ex As Exception
Return "error"
End Try
Return "Sent"
End Function
wiu joe
Thanks, that fixed it.
The thing that confused me is you could specify multiple to address’s separated by “;” in .Net 1.1, but this wont work in 2.0
MailMessage msg = new MailMessage(‘FromAddress’,’ToAddress1;ToAddress2’);
BJBarry
I'm converting a VB.NET 1.1 app to 2.0 and the mail functions are giving me the most trouble with the lack of support for delimited addresses. The following line of code throws an invalid address exception for me:
Dim
objMessage As MailMessage = New MailMessage()treidel
One thing that I've recently found regarding the comma thing is that in 1.1 as was mentioned above, to go to a list of addresses using on string, you used to separate your addresses by semi-colons.
i.e.
MailMessage myMail = new MailMessage();
myMail.To = "blah@blah.com; blah2@blah.com";
Now in 2.0
that would look like:
MailMessage myMail = new MailMessage();
myMail.To.Add("blah@blah.com, blah2@blah.com");
Hope that is a little more clear for anyone else looking for this.
Carl Berger
After reading Durga's post, if you are still having problems, please post your code. Also, if you are getting an exception, please post the full exception message.
JimMace
Point taken.
Thanks
JonHAL
No your statement is not correct
The following code works great for me.
You should use , separated addresses, not ;
If you used ; it would have thrown an exception
Unhandled Exception: System.FormatException: The specified string is not in the form required for an e-mail address.
at System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset, String& displayName)
at System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset)
at System.Net.Mail.MailAddressCollection.ParseValue(String addresses)
at System.Net.Mail.MailAddressCollection.Add(String addresses)
at System.Net.Mail.Message..ctor(String from, String to)
at System.Net.Mail.MailMessage..ctor(String from, String to)
at Test.Main()
using System;
using System.Net.Mail;
public class Test
{
public static void Main()
{
SmtpClient client = new SmtpClient("smtphost", 25);
MailMessage msg = new MailMessage("x@y.com", "a@b.com,c@d.com");
msg.Subject = "sdfdsf";
msg.Body = "sdfsdfdsfd";
client.UseDefaultCredentials = true;
client.Send(msg);
}
}
Glen Bartlett
i.e.
string emailGroup = string.Empty;
ListBox.SelectedIndexCollection indexes = listBox1.SelectedIndices;
Net.Mail.MailAddress toAddresses;
//go through each selected item and pull back the value
foreach (int index in indexes)
{
emailGroup += (string) listBox1.Items[index] + ",";
}
//removes the last comma
emailGroup = emailGroup.Remove(emailGroup.Length - 1);
Secondly, when you create the email address, you need to pass the name of the variable not enclosed in quotes.
i.e.
toAddresses = new Net.Mail.MailAddress(emailGroup)
Please let me know if this doesn't solve your problem.
Disclaimer: the above loop would be made more efficient with a stringbuilder class. For sake of clairity I used what Jeff was using.
scalpa
public
void SendMail(){
MailAddress from = new MailAddress(address1@xxx.com,"name3"); MailAddress to1 = new MailAddress("address2@xxx.com;","name1"); MailAddress to2 = new MailAddress("address3@xxx.com","name2"); MailMessage EMessage = new MailMessage(from, to1);EMessage.Body =
this.G_EmailContent;EMessage.IsBodyHtml =
true;EMessage.Subject = "
subject1";EMessage.To.Add(to1.Address);
EMessage.To.Add(to2.Address);
EMessage.From = from;
SmtpClient mailClient = new SmtpClient("server_name");mailClient.UseDefaultCredentials =
true;mailClient.Send(EMessage);
}
exception:
Unhandled Exception: System.FormatException: The specified string is not in the form required for an e-mail address.
at System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset, String& displayName)
at System.Net.Mail.MailAddress.ParseValue(String address)
at System.Net.Mail.MailAddress..ctor(String address, String displayName, Encoding displayNameEncoding)
at System.Net.Mail.MailAddress..ctor(String address, String displayName)
at TechNetAutomation.EmailBuildReport.SendMail()
at TechNetAutomation.EmailBuildReport.RunReport()
at TechNetAutomation.RunAutomation.Main(String[] args)
el_richard
Why can't you send to multiple TOs
What is the problem you are having
We definitely support this feature.
Use code something like
MailMessage msg = new MailMessage();
msg.To.Add(new MailAddress("blah1"));
msg.To.Add(new MailAddress("blah2"));
msg.To.Add(new MailAddress("blah3"));
etc.
A-Ka
OK, so why didn't Microsoft:
1. Put this in the documentation MailAddressCollection.Add(string) mentions NOTHING about the delimiter.
2. Simply leave the delimiter alone, or support both What a pain in the neck!