The question: Is it possible to configure multiple SMTP servers or update the SMTP object server information at runtime?
Description of problem: The site I'm working on has a few pages which send emails. Our site is using Gmail so even though it's a custom domain our email is sent out though Gmail SMTP servers.
Some emails come from the system and some emails come from users in certain groups. I have an SMTP server configured with the admin email for the system e.g. admin#mysite.com This works fine and when I get the email it shows from admin#mysite.com
One of our user groups let's call it "groupA" has an email configured on our domain i.e. groupA#mysite.com When I send the email and specify a from address for the MailMessage object as groupA#mysite.com it still shows up in my outlook as coming from admin#mysite.com I did a little further testing and if I specify both the from address and the ReplyTo as groupA#mysite.com it will show as From=admin#mysite.com but when I choose reply in outlook it shows groupA#mysite.com My best guess is that Gmail is overwriting the From address with the SMTP user to prevent email spoofing.
I found this: http://www.systemnetmail.com/faq/4.1.aspx but it won't work for me since group A, B, and C all need to send emails from the same page.
To my knowledge, it's impossible to fake the "from" address when using gmail.
Even if you use apps premiere, and set up address aliases, it still says "sent on behalf of ".
system.net.mail configuration in web.config only supports one config
you can easily create your own custom config and configure email server settings at runtime, like so:
SmtpClient smtp = new SmtpClient("smtp.gmail.com");
smtp.Port = 465;
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.UserCredentials = new System.Net.NetworkCredential("yourusername", "yourpassword");
smtp.Send(mail);
you can obviously store yourusername and yourpassword in app settings
Related
I am new to firebase and I am trying to handle firebase user authentication in React.js. I did manage to create users with email and passwords. But, now I would like to send the user an Email link to reset their password.
My code currently look like this.
// This line of code belongs to the top
import { auth } from '../firebaseConfig'
//This part goes under the React component
<p onClick={async () => {
try{
await sendPasswordResetEmail(auth, // My Email Id)
alert('Password reset link has been sent to your email')
}
catch(err){
alert(err)
}
}}
>Forgot your Password ?</p>
However, I do not get any error messages and I do get the alert message that says "Password reset link has been sent to your email." Unfortunately, I didn't receive any email. Note that I have given my own email id as the parameter for testing purposes.
firebaser here
Did you check your spam folder? We recently see a lot of the emails from Firebase Authentication ending up in the user's spam folder or being marked as spam in a system along the way. This is being tracked in this status message on the Firebase dashboard and in public issue #253291461.
To reduce the chances of the messages getting marked as spam, consider taking more control of the email delivery yourself.
As a first step, consider using a custom domain with your project. Email that comes from a custom domain has less chance of being marked as span.
As a second step, consider setting up your own SMTP server.) for delivering the email, so that the emails are not being delivered from Firebase's shared infrastructure anymore.
While these steps are more involved, they typically will drastically reduce the cases where the messages from Firebase Authentication are marked as spam.
Full Guide Based on Frank's Answer
Firstly create a new email account you can use to relay the Firebase emails through the SMTP server with. I personally chose Gmail, but I tested with Outlook and it also works.
You can now find an SMTP server host that will work for your scenario. If you're sending less than 1000 emails per month you can find free and reliable hosts. I chose SMTP2GO's free option.
Now you've found the SMTP host, add the email address you've chosen as a single sender email (note that if you do own a domain, you can alternatively use that to send emails).
Note that you will have to verify the email, usually by your host sending a link to the email's inbox. Make sure to check spam.
Once verified, navigate to where you host allows you to add SMTP Users and add a new user. This will allocate an SMTP username and password.
Navigate to the Firebase console, and choose the Authentication option from the sidebar (within the Build product category).
Go to Templates → SMTP Settings and enter the details of your SMTP server. The username and password fields are to be filled with the SMTP user login you created in the step above.
It is better to use TLS, but I believe SSL should work too but it is untested.
Click save, and you're all set up - but there may still be steps to perform depending on your email provider.
Provider Specific Steps
If the emails are being sent to an account managed by Google you will have no issues with your emails being quarantined by anti-spam policies and it will work immediately.
If you are using Outlook, you will have a different problem on your hands. Outlook's built in defender will most likely have auto-quarantined your email under multiple policies - that bit is important.
These policies are likely to be both spam and phish policies. If you unblock one of them, the other will catch it and re-quarantine.
Unblock both policies for the email address, and test. You can see the status of quarantined messages in Microsoft 365 Defender app under Review → Quarantine. Please note that you will need to be an administrator to add global allow policies to your email accounts.
If this still doesn't work it is likely that your company has an additional external filter (as mine did), and you will have to add the IP's manually to the Tenant Allow/Block Lists spoofed senders tab.
I'm using mailgun and the WP Mail SMTP plugin to send out transactional email from woocommerce shop.
On mailgun I'm on a shared server.
I've sent out some test emails and unfortunately it seems that customers with email addresses #yahoo.com and outlook.com will find my emails only in their SPAM / JUNK folder.
#gmail and #gmx seems to work (INBOX)
Do you face this issue as well or did I set up something wrong?
Is it because I'm on a shared mailgun IP?
I've read somewhere that you can try to "delete" your mailgun IP under "Manage IP" and get a new one. Is this correct? Will this possibly solve the problem?
Help is very much appreciated.
If you've not done so already, make sure to do the Mailgun domain verification. You can also check two tools to see if there's anything you need to fix on your end before trying for a new IP:
MX Toolbox
Mail Tester (just using WP Mail SMTP's test email function to the address they generate for you)
But if those show up clean (or if they imply your mail server has a bad reputation), I'd try the new IP.
Instead of using the built-in email system in Firebase, I wanted to use a SMTP called SMTP2Go but was wondering how to connect it and if need to buy my own email domain first or not? What requirements are needed to connect a SMTP to Firebase?
I assume you're trying to set up a custom SMTP server for sending (verification, password reset, email change) emails from Firebase Authentication. You can set a custom SMTP server in the Firebase Authentication console.
You don't need a custom domain for this. All you need to know is the SMTP host and port of SMTP2GO (something like mail.smtp2go.com and 587), and your account details from them (the username/password you use to log into smtp2go with).
The Sender address field is just what recipients see in the "From" field of the email, and also where any replies they send will be going. It can be whatever address you want to use to support your users.
If you would like to use the Gmail account as SMTP service for Firebase following steps might help you with that. I have shared a medium post about it if you would like to have more details.
Enable the 2 step verification for the G Suite account.
Create an app password for the account.
Allow users to manage their access to less secure apps
Unlock the captcha
The G-Suite account is ready to be used as an SMTP service for firebase.
Check this link please for more details.
I trying to send email to my gmail, but I cannot see the email in my gmail. I also tried to send the email to my hotmail, it is working when send to hotmail.
How do I fix this problem?
Thanks
Today, email service providers are very string with spam. I think your mail that you sended with wordpress is in your Gmail spam folder. You're maybe sending it from localhost or something like that. So Gmail put it by default to the spam folder. You can recover that by mapping a public domain name on your smtp server or like #raman-kuman's answer, you can use a plugin like Postman SMTP plugin to configure an email service like Gmail or Hotmail. If you use another famous email service, you can maybe find the settings here.
I would highly recommend you to use a personal mail server, so you can personalize your email like:
no-reply#my-awesome-domain.name for a notification
contact#my-awesome-domain.name for contact
...
It's looks better than my-awesome-company#gmail.com.
It's most likely to do with :
1.) Your SMTP relaying settings within Wordpress. Check how it's configured and post a new question if you're struggling to get them to work. If your using a SMTP relay service then confirm these credentials are correct.
2.) The email address you are sending out as. If your sending as GMAIL or Hotmail e.g. administrator#hotmail.com from Wordpress using the PHP to send mail then it maybe be sending the mail from the IP address of your webserver which will not be part of the Hotmail/Gmails SPF record so recipient servers would block you on connection.
Make sure your email address that is sending from WordPress is the same as your domain name - something like wordpress#yourwebsite.com, otherwise use the Postman plugin, it will take a bit of configuration but you will be able to send to anywhere.
You can use Gmail's SMTP using Postman SMTP plugin, it works for all..
When sending email using MailClient, is it possible to have the .From property be for an email of a different domain than the credentials passed to the SMTP server? E.g., my credentials passed in are #mydomain.com, but the .From email is #anotherdomain.com. Or, must they be the same? Thanks.
You can specify anything you want as the From address! However it might make it more likely that your message winds up in spam or blocked by a spam firewall.