WPF application with send mail open account - c#

i have WPF application with send mail function.
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
NetworkCredential basicCredential = new NetworkCredential("user_name", "password");
smtp.Credentials = basicCredential;
smtp.EnableSsl = true;
smtp.Send(mail);
i noticed that McAfee antivirus bloks the SMTP mail by default and only after modifing McAfee configuration "prevent mass mailing worms from sending mail" property to false i could send email. is there any email account that will not be blocked with any antivirus without any configuration modification (Yahoo maybe...)?

I had the same issue and I'm afraid the only way of overcoming this is by applying a rule to your AV to allow emails sent from within your application. At least this is what I have done in the past since I couldn't find any other way.

Related

Can't send email from code using Gmail smtp

I'm trying to send an email using the Gmail smtp server. When I try to send I get
"The SMTP server requires a secure connection or the client was not
authenticated. The server response was: 5.5.1 Authentication
Required."
I set the credentials in the code so I don't know what I should add. Is there some other property I have to set?
Code:
MailMessage msg = new MailMessage("noreply#mail.com", "receiver#gmail.com", subject, template);
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.Credentials = new System.Net.NetworkCredential("Username", "Password");
client.DeliveryFormat = SmtpDeliveryFormat.International;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.EnableSsl = true;
if you are doing everything correctly, this link is probably what you need.
Unlike other mail servers, gmail requires more security when third party applications are considered.You should login to your gmail account and allow third party applications to be able to send and receive mails over gmail.

The SMTP server requires a secure connection or the client was not authenticated for service account

I need to use a company shared account (email address is removed for privacy) to send notifications, but fails all the time. I tried all possible codes with no luck.
So, I had a little suspicious about the account. Then I used my office 365 work account, and it is working as expected. But I still need to use the shared account.
The error information is as follows:
Message = "The SMTP server requires a secure connection or the client
was not authenticated. The server response was: 5.7.57 SMTP; Client
was not authenticated to send anonymous mail during MAIL FROM
[D*******8.na***11.prod.outlook.com]"
var message = new MailMessage("from", "to", "MySubject", "MyBody");
SmtpClient client = new SmtpClient("outlook.office365.com");
client.EnableSsl = true;
client.Port = 587;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("username", "password");
client.Send(message);
If your account has multi-factor authentication enabled you'll need to use an "app password" for your Office 365 account instead of a regular one that you use to log on.
See https://learn.microsoft.com/en-us/azure/active-directory/user-help/multi-factor-authentication-end-user-app-passwords for how to set one up.

C# - SMTP - GoDaddy - Send Email

What am I doing wrong? Im trying to send a email using c# with GoDaddy webhost.
SmtpClient client = new SmtpClient("relay-hosting.secureserver.net", 465);
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("emailGODADDY", "password");
MailMessage message = new MailMessage("emailGODADDY", "otherEmail");
message.Subject = txtSubject.Text;
message.Body = txtContent.Value;
client.Send(message);
With a shared hosting account with Go Daddy you need to send emails on port 25 not port 465. Furthermore, relay-hosting.secureserver.net does not need you to authenticate with a username and password when you are sending from your hosting account.
Each smtp server has own credentials which is not same with other.
According to microsoft client.UseDefaultCredentials should not be used
when possible.
You can try by omitting this line of code.....
client.UseDefaultCredentials = false;
If this will not work then try with
client.EnableSsl = false;
Because some server do not use secure connection.
You can check with this code also
client.DeliveryMethod = SmtpDeliveryMethod.Network;
Just comment out below line than it will work fine
//client.EnableSsl = false;
also use Port 25.
OKAY! I have figured this out.
Wow, I've spent so much time trying to get this up and running. I have Economy Windows Hosting with Plesk (Shared), with a single Office365 email account. I learned the hard way that you can't create a SMTP client that connects to smtp.office365.com, as port 587 is blocked for this shared hosting package. TXT records, SPF records don't help either. Lots of wasted time.
But alas, here's exactly what worked for me. I added the following to my web.config, though I think you can build the same info into your SMTP client object. Still, this works fine. Whatever.
<system.net>
<mailSettings>
<smtp from="noreply#MyDomain.com">
<network host="relay-hosting.secureserver.net" port="25" />
</smtp>
</mailSettings>
</system.net>
In my code behind, I made sure that the FROM address used in the MailMessage exactly matched the FROM value within the web.config. Does this really matter? Not sure, but they match, and it works. Whatever.
The FROM address (noreply#) does NOT exist as an email, nor is it an alias, etc. It's just something from the same domain where the website is hosted.
My TO address is retrieved from within the web.config (AppSettings["SendTo"]). This is my real email address that lives on this domain (my Office365 email address). I'm not sure if you can send an email to something outside the domain, as I haven't tested.
... obviously the MailMessage (msg) is not complete ...
msg.To.Add(new MailAddress(ConfigurationManager.AppSettings["SendTo"].ToString()));
msg.From = new MailAddress("noreply#MyDomain.com");
var smtp = new SmtpClient
{
// nothing is needed here
};
smtp.Send(msg);
Create your client and send the message!
YAY! I had to list the noreply# email as not spam, but now it's arriving as expected. Remember, you only have a limited number of relay emails per day, so use them wisely! Hope this helps!

Send email with out using network credentials

I want to send email using the SMTP client in C#. Currently I am using this code:
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.To.Add("receiver");
message.Subject = "";
message.From = new System.Net.Mail.MailAddress("sender");
message.Body = "This is a test mail";
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com");
smtp.Credentials = new System.Net.NetworkCredential("username", "password");
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.Send(message);
But I want to send mail with out using username and password by just providing the sender address. Is this possible in C#?
Is this possible with any SMTP server(Not google). I mean login to server anonymously and just provide your mail address.
No. Gmail does not allow anonymous senders. Thankfully.
If it was possible anyone could pretend to send emails from everyone else, rendering gmail as one big spam engine.
It depends on your server. In your code you are using Gmail and Gmail requires this.
You can set up your own SMTP server.
The SMTP server in IIS allows this per default if your application is on the same server as IIS.
In the end you'll have to send credentials if the server demands them.
You could send the credentials of the current security context if that's what you're looking for. See: http://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultnetworkcredentials.aspx.

C# - Send e-mail without having to login to server

I have an application that needs to send e-mails. Currently, this is what I am using:
System.Net.Mail.MailMessage MyMailMessage = new System.Net.Mail.MailMessage();
MyMailMessage.From = new System.Net.Mail.MailAddress(fromemail.Text);
MyMailMessage.To.Add(toemail.Text);
MyMailMessage.Subject = subject.Text;
MyMailMessage.Body = body.Text;
System.Net.Mail.SmtpClient SMTPServer = new System.Net.Mail.SmtpClient("smtp.gmail.com");
SMTPServer.Port = 587;
SMTPServer.Credentials = new System.Net.NetworkCredential("email", "password");
SMTPServer.EnableSsl = true;
SMTPServer.Send(MyMailMessage);
Is there a simple way to send an e-mail without having to login to a server? Thank you.
GMail's SMTP server always requires authentication. You may need to setup your own server to send email without authentication.
Configure an SMTP server into your local network (behind a firewall to avoid being a spam source) and use it directly. You can create one in IIS.
There are 2 ways to achieve this:
1) Use your local smtp server (e.g. one with IIS on Win2003/2008 server) and write messages to the local pickup queue). This is possible with minimal changes.
2) You need to resolve the target smtp server. For example when you want to send an email to somebody at msn.com, you'll need to get the MX record for msn.com, e.g. something like mx1.msn.com. You can then directly connect to this SMTP server and send your email to the (local) recipient. Note that there are no built-in ways to resolve the MX-host in .NET (in the sense there are no methods on the Dns class to accomplish this) - you need to do it "manually". Also most SMTP hosts will reject connections from home/residential IP addresses.
You need an SMTP server that does not require authentication, however to stop it being a SPAM server, it needs some other kind of protection like a firewall.

Categories