Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Standard emailer class?

I'm going through my app, trying to clean up some code that sends e-mails. I started creating my own emailer wrapper class, but then I figured that there must be a standard emailer class out there somewhere. I've done some searching, but couldn't find anything.

Also, is there a code base for stuff like this anywhere?

EDIT: Sorry, let me clarify.

I don't want to have this in my code any time I need to send an e-mail:

System.Web.Mail.MailMessage message=new System.Web.Mail.MailMessage();
message.From="from e-mail";
message.To="to e-mail";
message.Subject="Message Subject";
message.Body="Message Body";
System.Web.Mail.SmtpMail.SmtpServer="SMTP Server Address";
System.Web.Mail.SmtpMail.Send(message);

I created a class named Emailer, that contains functions like:

SendEmail(string to, string from, string body)
SendEmail(string to, string from, string body, bool isHtml)

And so I can just put this a single line in my code to send an e-mail:

Emailer.SendEmail("[email protected]", "[email protected]", "My e-mail", false);

I mean, it's not too complex, but I figured there was a standard, accepted solution out there.

like image 414
Steven Avatar asked Feb 25 '23 03:02

Steven


2 Answers

Something like this?

using System;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using MailMessage=System.Net.Mail.MailMessage;

class CTEmailSender
{
    string MailSmtpHost { get; set; }
    int MailSmtpPort { get; set; }
    string MailSmtpUsername { get; set; }
    string MailSmtpPassword { get; set; }
    string MailFrom { get; set; }

    public bool SendEmail(string to, string subject, string body)
    {
        MailMessage mail = new MailMessage(MailFrom, to, subject, body);
        var alternameView = AlternateView.CreateAlternateViewFromString(body, new ContentType("text/html"));
        mail.AlternateViews.Add(alternameView);

        var smtpClient = new SmtpClient(MailSmtpHost, MailSmtpPort);
        smtpClient.Credentials = new NetworkCredential(MailSmtpUsername, MailSmtpPassword);
        try
        {
            smtpClient.Send(mail);
        }
        catch (Exception e)
        {
            //Log error here
            return false;
        }

        return true;
    }
}
like image 117
LukLed Avatar answered Mar 07 '23 03:03

LukLed


Maybe you're looking for SmtpClient?

like image 40
Dan Tao Avatar answered Mar 07 '23 02:03

Dan Tao