Send multiple emails using smtpclient.send - not working - c#

The code below works when using on local machine, but fails when published on server (HostGator) for multiple emails in to. It also works if I am trying to send email to just one person.
public void SendMailToMultiples(MailAddress fromAddress, string fromPassword, MailAddressCollection toAddress, string subject, string body)
{
MailMessage message = new MailMessage(){
Subject = subject,
IsBodyHtml = true,
Body = body,
From = fromAddress
};
foreach(var email in toAddress)
{
message.To.Add(email.Address);
}
var smtp = new SmtpClient
{
Host = HOST_NAME,
Port = PORT_NUMBER,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
{
smtp.Send(message);
}
}

Related

Email does not accept replies SMTP C#

I send an email via SMTP google and my code is working fine. What I want is to set this email does not accept replies in the SMTP setting.
Working Code
public ActionResult SendEmail()
{
var fromAddress = new MailAddress("from#gmail.com", "From Name");
var toAddress = new MailAddress("to#gmail.com", "To Name");
const string fromPassword = "password";
const string subject = "Subject";
const string body = "<p>Hello</p>";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body,
IsBodyHtml = true
})
{
smtp.Send(message);
}
return View();
}
Google Mailbox
I don't want the Reply button highlighted in blue
As far as I am aware, it is not possible through SMTP to disable a client's reply function.
Instead, you could create a no-reply address with a vacation responder to alert individuals that the inbox is not being monitored (possibly including where to go if a user does need to reach out to someone).

How to fix 'No connection could be made because the target machine actively refused it' Error when sending email

I'm trying to send a simple test email to check how the mail class works in C#, but when trying to call smtp.send(message); I get the following error:
SocketException: No connection could be made because the target machine actively refused it 173.194.207.109:587
I have looked around at the packets in wireshark (although admittedly I don't have the knowledge to make sense of them) and it seems like Google is sending back a [RST, ACK] packet every time I try to send the email. Is there a way to further diagnose this?
var fromAddress = new MailAddress("FROM#gmail.com", "FROM NAME");
var toAddress = new MailAddress("TO#gmail.com", "TO NAME");
const string fromPassword = "password";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
Looks like you may want to change your port value because you have EnableSsl = true,
Connect to smtp.gmail.com on port 465, if you're using SSL. (Connect on port 587 if you're using TLS.) Sign in with a Google username and password for authentication to connect with SSL or TLS. Reference
Try:
var fromAddress = new MailAddress("FROM#gmail.com", "FROM NAME");
var toAddress = new MailAddress("TO#gmail.com", "TO NAME");
const string fromPassword = "password";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 465, //or try: port = 587, or port = 25
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
This StackOverflow Answer may also be a good reference to use.

Email to Text not working

I am trying to send an email as text to end users mobile, the code is running fine but I can't seems to get the SMS.
Here is my code
public Task SendAsync()
{
var fromAddress = new MailAddress("test#gmail.com", "Authenticator");
var toAddress = new MailAddress("mynumber#sms.sancharnet.in", "User");
const string fromPassword = "mypassword";
const string subject = "subject";
string body = Session["PIN"].ToString();
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body,
IsBodyHtml = false
})
{
smtp.Send(message);
}
return Task.FromResult(0);
}
Is there something I am missing here ? or is this not how we try to do an Email to text ?

C# WPF - How to send an e-mail (to myself)?

for debugging purposes, I have globally handled all exceptions. Whenever an exception occurs, I silently handle it, and want to send myself an e-mail with the error details, so I can address this issue.
I have two emails, email1#gmail.com, and email2#gmail.com...
I have attempted using this code to send myself an e-mail, but it is not working.
string to = "email1#gmail.com";
string from = "email2#gmail.com";
string subject = "an error ocurred";
string body = e.ToString();
MailMessage message = new MailMessage(from, to, subject, body);
SmtpClient client = new SmtpClient("smtp.google.com");
client.Timeout = 100;
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Send(message);
I have tried countless other pieces of code but I have no idea how to do it. Does anyone have a solid solution for this? Thanks a bunch.
This has to work. See more info here: Sending email in .NET through Gmail
using System.Net;
using System.Net.Mail;
//...
var fromAddress = new MailAddress("alextodorov01#abv.bg", "From Name");
var toAddress = new MailAddress("kozichka01#abv.bg", "To Name");
const string fromPassword = "fromPassword";
const string subject = "an error ocurred";
const string body = e.ToString();
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
//...

c# sending mail pass string to body

I was following this: post
And after a few seconds realized that the body is a constant and I can't pass a string to it. Is there any fast way to change this code a bit and get what I need?
public void PostMessage(string body,string subject)
{
var fromAddress = new MailAddress("from#gmail.com", "From Name");
var toAddress = new MailAddress("to#example.com", "To Name");
const string fromPassword = "fromPassword";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body,
})
{
smtp.Send(message);
}
}
you can call it like this:
PostMessage("MAH BODY", "SUBJECT");
You remove the const bit...
const string body = "Body";
turns into:
string body = bodyPassedIn; //where bodyPassedIn = is being passed into the method
You don't even need the variable at all:
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = bodyPassedIn // here!
})
{
smtp.Send(message);
}

Categories