umbraco email form not working with gmail smtp - asp.net

I am trying to get the Cultiv Razor contact form working, but am not having much luck. I've read that you can use GMail as an smtp relay (found some solutions here, in the documentation, and on the umbraco forums which outline how to do it) but I can't get it to work. here's what my web.config looks like (masked out the user id and password here):
<mailSettings>
<smtp>
<network host="smtp.gmail.com" port="587" userName="xxxxxx#gmail.com" password="xxxxxx" defaultCredentials="false" enableSsl="true" />
</smtp>
</mailSettings>
and I am using a completely stock install of cultiv contact form. Here's my macro code directly on my template:
<umbraco:Macro MailFrom="xxxxxxx#gmail.com" Alias="Cultiv" EnableSsl="true" runat="server"></umbraco:Macro>
I have tried it with and without the ssl setting, and have tried with and without the #gmail.com part of the address. Every time I try and test the form, it reloads the page, appends #cultivcontactform to the end of the URL, the form disappears, and the following is added to the umbracolog table:
Error creating or sending contact mail, check if there is a mailFrom property on your document and that it has a value, or specify a MailFrom parameter on the macro call exception:
I'm stumped on this and have been for a while. I'm using Umbraco 4.11.10
Any suggestions for further troubleshooting would be much appreciated.

It is possible that the installation of the package wasn't complete, can you please check the macro-property "MailFrom" on the "Cultiv" macro?
Even if you specify the value in the umbraco:Macro tag, the macro-property has to be saved on the Macro itself.
Or, as the error suggests, add a property on your document type with the name "mailFrom" and save it with your email address.

Related

Email body containing dot (.) in the URL gets replaced by two dots

I have written code to send emails from my .NET application. Application sends emails successfully. The emails contain number of hyperlinks each inside anchor tags. However, if I try to open emails in the outlook client, it is converting single dot to two dots in the URL. I analyzed the pattern and I could see it happening only when the dot character in URL is the first character of a new line in outlook email. Outlook sets lines automatically, so I do not have control over it.
While forming the body contents, I am setting the "BodyEncoding" property of MailMessage object to System.Text.Encoding.UTF8, but that doesn't make difference in the output.
Could anyone please help what could be the reason, and how to resolve this issue?
I have been facing similar issue when i was trying to save mail in Directory using web.config file.
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="c:\TestMails\"/>
</smtp>
</mailSettings>
</system.net>
This issue has been resolved, when sent mail directly to Mail address.

Send Email when Error in ASP.Net MVC 5 using ELMAH

I am trying to send email whenever there is an exception in my code using Elmah.
Here is the configuration in web.config file.
<elmah>
<errorMail from="MyEmailId#gmail.com" to="MyEmailId#gmail.com"
async="true" smtpPort="0" useSsl="true" />
</elmah>
<system.net>
<mailSettings>
<smtp deliveryMethod ="Network">
<network host="smtp.gmail.com" port="587" userName="MyEmailId#gmail.com" password="MyEmailPassword" />
</smtp>
</mailSettings>
</system.net>
Now above configuration works fine. I tested in localhost every time I get an exception I am getting an Email Successfully.
Question 1:
Does that mean if I deploy my application with above settings, no
matter who ever access my website, if they get an exception I will
receive an email.
Question 2:
I have added password in above config file. But now everyone can see
my password. Is this the right way or I can still send the mail w/o
putting my password in config file.
Answer to question 1 :
Exceptions will be caught irrespective of the type of error module you
use. So you will definitely receive an email in those exception cases.
Answer to question 2 :
Why are you using your personal mail id? Create a new ID and use it
for the purpose, so that even if others see, it doesn't have any
effect. Others means only the developers will be able to see, not the
public. You can encrypt the web.config file by checking this MSDN
article.
Also consider encrypting your password and storing it in the
web,config file.

Mailbox unavailable error

When trying to send out an email in a .NET site, the following error is being encountered:
Mailbox unavailable. The server response was: No such user here
Does this error appear if the code is trying to send to an email address which doesn't exist?
Thanks.
I now have more information about this error. The emails are sent from 'noreply#[domain]'. When the emails are sent to an email address of the same domain, the emails are sent without a problem. This error only appears when the email addresses being sent to are not from the same domain. I don't know if that's any use?
This happens when you specify a domain with your NetworkCredentials. If you specify a domain (third argument) then you can only send to valid mailboxes within that domain. Leave it out to be able to send to any address outside the domain.
var client = new SmtpClient("smtp.server.com");
client.UseDefaultCredentials = false;
// The following will be able to send to anyone outside the domain.
client.Credentials = new NetworkCredential("user", "password");
// The following will only work when sending to users on server.com
client.Credentials = new NetworkCredential("user", "password", "server.com");
Could be that your password is incorrect. I had to reset the password on the mail server, then the error went away.
This may happen when you switch from 2.0 platform to 4.0. As it was explained here you need to tell IIS explicitly that you are not using default credentials and domain. Use the following syntax in web.config:
<network host="mail.younameit.com" port="25"
userName="account#younameit.com" password="youchoose"
defaultCredentials="false" clientDomain=""/>
The last two parameters are most important to fix this problem.
This sounds like an smtp issue
Try setting your smtp server info in the web.config file like this :
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network defaultCredentials="false" host="mail.blah.com" password="xxxx" port="25" userName="ex#blah.com"/>
</smtp>
</mailSettings>
</system.net>
This is a decent article detailing this section of the web.config and how to access it with code behind :
http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2008/09/06/accessing-web-config-file-smtp-mail-settings-programmatically.aspx
This Q/A was useful to me in a similar situation. For us, the key fact was that the error only occurred for email addresses on a different domain. I learned that our new webhost/mail server setup is intentionally configured this way. (A previous one with the same hosting co. was not.) Some combination of app code or Web.config settings might have solved our problem, but the most direct way forward was to create a no-reply account on our domain, so that now no-reply#ourdomain.com IS valid, and IS allowed to send to external addresses.
No modifications to code or the Web.config were needed. The latter calls out only "from" and "host" and the credentials are not needed in our hosting environment. (When we override the nominal "from", we need to override it to be some other address that's valid on our domain.

Smtp Config in asp.Net

Hai,
I have developed small asp.net application.i send mail through this application.so my web config file have following coding
<network host="smtp.gmail.com" port="587" userName="username#domainname.com" password="*****" />
</smtp>
</mailSettings>
we have google apps.we don't have mail server.
i try to sent mail,i getting time out error.
regards
mariyappan.J
If you are using System.Net.Mail.MailMessage try this:
yourMailMessage.EnableSsl = true;
This could be:
Firewall related
IIS User account related
Have you tried smtp.googlemail.com Reading this it doesn't matter
I realise that's a bit of a generic answer but your config settings are correct so logically it can only be related to the network, or the user.

SMTPClient Half Working \ Half Not

I am using Microsoft's membership framework on a website. I am able to send password retrieval e-mails, but am unable to send e-mails myself using SMTPClient.
When you configure the SMTP settings in the Web Site Administration Tool, what are the settings that this application give it's SMTPclient?
If I know this, I can duplicate it and hopefully send e-mails.
A few items I've ruled out.
- I'm using port 25, (which is the only one allowed under medium trust).
- This code works on my local system.
I was attempting to pass the values for SMTPClient in with the constructor. What I failed to realize is that SMTPClient apparently automatically pulls the values from web.config and uses those.
By trying to pass my own values (even though they where identical); I inadvertently violated trust levels causing a security exception.
Don't pass in smtp info in the constructor, use web.config to set it up, and there should be no problem in medium trust.
It could be lots of things, from credential problems, DNS issues, or...who knows. Is it unable to send as in you get an error or as in they appear to go but never arrive?
Are you sure the WSA tool is going through SMTPClient, or are you just assuming it (I don't know myself)?
-- MarkusQ
I am getting a Security Exception on
my mail
That sounds like a credentials problem then, or a trust issue. Are you sure you're running at medium (or higher) trust? What's the rest of the error?
-- MarkusQ
Try checking your web.config file: is the WSA tool updating these settings?
This element is under the configuration element
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="you#email.com">
<network
host="your.gateway.com"
userName="your#email.com"
password="your_password"
port="25" />
</smtp>
</mailSettings>
</system.net>

Resources