Sending Emails out with From Address from different domain - asp.net

I work for a subscription fulfillment company, where we handle the subscriptions to various magazines (renewals, invoices primarily). So we email out to the subscribers when they purchase a magazine, that we are charging them for their monthly/annually renewal or they sent us a question about their subscription and we are answering them.
As of right now, we are creating email addresses on our domain for each of our clients (the publishers), but the publishers want us to send out the emails with their domain name as the from (not ours).
I know this can be done because we purchased email blasting software and it does it without a problem (the clients put in SPF records so that it won't be marked as SPAM). The problem is that when our .Net (specifically VB.Net) application goes to send out emails with a From from a different domain, I get back that the user we authenticated to our internal SMTP server with isn't authorized to send out on behalf of the From.
I got a partial idea from Send SMTP with From address of another domain that maybe I could ask the publishers to issue us credentials to their SMTP server and have the .Net code try using their server and credentials to send out the email, but I would prefer not to go that route.
On the same note, our people use Outlook 2010 to answer most of the customer service emails, so it would be good if the solution for the .Net could also work for Outlook. If it doesn't, it doesn't, but at least the .Net one is a step in the right direction.
Now, I am a .Net developer, not an SMTP administrator (but I'm the closest to it that we have). So any instructions need to be detailed, please assume that I am ignorant in this area, so if you say go run program such and such, please state where program such and such is.

Related

How to authenticate emails to prevent gmail mark it as spam

We just open a new e-commerce website and recently noticed Gmail treat our e-mails as spam (notice the red question mark). Our website run behind CloudFlare so the email server IP address is different than the domain.
We also did not send a bulk email at least not yet. There are some explanations in Google FAQ but not sure what it means or how I need to implement it. Can you please explain how to set these DKIM (preferred) or SPF.
Our website uses nopcommerce (3.70) and developed with ASP.Net.
Disclaimer: I'm not a "pro" at these things (more later):
IMHO, this is probably the simplest explanation of DKIM
SPF: in my own words: providing a DNS TXT record that identifies "where" all your emails (smtp/mta servers) can come from. The more complete/formal spec is here
You can implement both
Opinionated:
SPF is easier to implement
identify all the origins of your email, set them in your SPF record, which is a TXT record in DNS
DKIM: is more complex - your mail/smtp server/s must implement it.
As a "web developer" one can see how this would be done in ASP.Net/C#/VB - e.g. sign some payload and using HttClient send some signature in an HTTP header in some outbound request.
But this is done on an SMTP server, so unless you have one that already implements it, it's something you'll have to do...
IMHO, for DKIM, unless your SMTP/MTA implements it, I'd go for services that provide it. There are 2 types:
Transactional email services:
Not for bulk email. These are the usual "order confirmation" emails, standard support/customer service, etc. emails. They will likely have APIs for you to implement (e.g. sending your MailMessage using thier servers and/or constructing something that equates to it and send that "object" to their API).
Bulk email services
these providers will already have implementations because one of their core value propositions is "deliverability" of your bulk/marketing emails. They should (of course do your due diligence) have both implementations inherently. Will also have their own APIs for bulk email context.
Hth

Email from address changes once it is delivered

I am currently doing work for a client and am running into a bit of an issue when an email receipt is sent to the user. What is happening is that once the email address is delivered the from address is completely different then the one I am using. I have tried using a few different email addresses and they work fine. It's only the one that they really want to use that is causing the problem.
I don't have access to their site and am also unsure of how the mail is sent. What I am wondering is if anyone knows the questions that I can ask to figure out what is going on on there end. They recently changed who was handling their site so I have a feeling something may be getting mixed up.
The site is built with WordPress and is using Gravity Forms. From the changed email address I can see that they are using Bluehost since the email changes from #companyname to #boxXXX.bluehost.com.
Email servers are not my area of expertise so I really appreciate any help.
Very likely their Wordpress website is sending emails through the wp_mail() function which is nothing more than the usual mail() function from PHP.
By default if you send an email through this method it will display either the hostname of the server where the website is sitting or the SMTP server, in this case boxXXX.bluehost.com depending on what's the policy of Bluehost regarding sending e-mails.
Generally hosting provider switch off the php mail() function in shared hosting environments to prevent spam and they provide you with the details to connect to their SMTP server and send legit e-mails, if their server is sitting on a shared hosting I think you might need support from Bluehost directly, explain to them the situation and they will help you throughout the process.
If the website is sitting on a virtual dedicated server then they need to do additional configuration on it. In this case what I do is to access onto cPanel and create a new mailbox with the address I want to send from (wordpress#domain.com, info#domain.com, whatever the client wants to be displayed) and configure Wordpress to send with through the VPS SMTP (you can do that easily with this nice plugin: http://wordpress.org/plugins/wp-mail-smtp ) with the address and password you chose when creating the email account on cPanel.
From now on the email will show the correct address.
Also you might want to increase the deliverability of your message and to instruct the email servers that are receiving the email that you're using a legit account, so you should add to their DNS both DKIM and SPF server records.
Note: I suggest you to be extremely cautious when playing around with DNSes, especially when touching email related records. If you are not familiar on how setup new and change the current existing records ask for help from someone who has quite good experience and to guide you through the process so you understand how it works and the consequences of a bad formatted or clashing records.
We recently had a really bad couple of hours at work when someone touched the company records without any clue of what was doing and we ended up with no email and website working for several hours.

Bulk mailing in ASP.NET

We have a site running in ASP.NET 4.0 and a dedicated Windows Server 2008R2.
So after a user successfully registers to the website, we use Facebook like friend finder and give the user an option to import friends from Facebook, Gmail, Yahoo! and / or Hotmail if they want that. And after they have selected the friends they want to mail, we send those friends invitations. As we cannot make the user wait until all the invitations are sent, we need another mechanism to do that. We are thinking of
Using a service like MailChimp
Using MSMQ for sending mails
Using a Windows Service to retrieve ids from a database and send them?
On our research we found out that 2 and 3 may result in the SMTP Server being blacklisted and it will also cause the server load to increase. Our questions are
Are those assumptions correct?
Is MailChimp or services like that the way to go?
Are there any better alternatives?

How to setup users with email: user#usersdomain.com in ASP.NET

I have a requirement which is to allow users to buy a domain through my site and then programatically set them up with email accounts at that domain, eg user1#domain.com user2#domain.com, etc.
To integrate the buying of the domain I'm planning on using a domain reseller like this.
The next step - of creating the email accounts - is where I'm floundering currently. I'm assuming I can programatically set the domain name to point where ever I need for the email pointers, but not sure how to programatically setup the email client on the other end. I don't care so much what the email client is - gmail, etc. Ideally I'd be able to brand it a bit, but it's not absolutely required.
Hoping someone has experience with this. Thanks in advance.
first you need to choose a mail server for your system. Then you get the SDK of this server and create with the provided interfaces users from your user interface.
For example, a basic free mail server is MailEnable that plesk also use for the same reason.
on this page you can get the sdk of the MailEnable mail server
http://www.mailenable.com/developers.asp
and there you can find the api to control it from your asp.net pages.
Hope this helps you to start.

Bypassing exchange accounts while sending mail through SMTP Server in ASP.NET

I develop applications using the ASP.NET framework for my academic organization. We also have an exchange server for internal accounts.
Since my organization is under the umbrella of a larger one, all our internal exchange accounts also have external parent accounts with the same names.
I'm facing an issue where automatic emails triggered using the system.net.mail classes are correctly routed to the required email addresses, but they go into exchange account's inbox.
While this is not a big problem for some users, there are a few who want the emails to go to the parent accounts so that they can view emails while working from home.
I was wondering if there is any way I can achieve this at the application layer - to instruct the SMTP server to send mails to the external accounts with the same names and ignore the local active directory accounts.
Thanks.
No, you can't. The SMTP protocol doesn't have any spec for this.
I believe you would have to setup and point to an alternate relay for this to happen.

Resources