Asp.Net’te normal olarak bir metin kutusuna e-posta adresi doğrulaması eklerseniz (regularExpressioVlidator) hasanöşiğüı@hasangürsoy.com.tr gibi bir e-posta adresini doğrulamayı geçemez. Bu da tasarladığımız web sitesindeki iletişim formuna Türkçe domain sahiplerinin e-postalarını girmemesine neden olacaktır.

Son tasarladığım bir web projesinde bu nokta sonunda beni araştırmaya sevk etti. Fakat pek de istediğim gibi birşey bulamadığımdan ifadeyi (expression) kendim yazdım. İfade şu şekilde:
\w*[\wçığöşü]+([-+.']\w+)*@\w*[\wçığöşü]+([-.]\w+)*\.\w+([-.]\w+)*
Bunu bir örnekte açıklayacak olursak formumuzda aşağıdaki kod yer almalı. Ayrıca bir de requiredFieldValidator koyuyorum ki e-posta kutucuğu boş da bırakılamasın.
<asp:TextBox ID="tEPosta" runat="server" CssClass="input" />
<asp:RequiredFieldValidator ID="rfvEPosta" runat="server" ControlToValidate="tEPosta" ErrorMessage="* zorunlu" Display="Dynamic" />
<asp:RegularExpressionValidator ID="revEPosta" runat="server" ControlToValidate="tEPosta" ErrorMessage="* geçersiz" Display="Dynamic" ValidationExpression="\w*[\wçığöşü]+([-+.']\w+)*@\w*[\wçığöşü]+([-.]\w+)*\.\w+([-.]\w+)*" />
Bu soruya stackoverflow‘da ve asp.net‘te yanıt aradım.





Her çözüm başka bir sorunu doğurur. Bu yöndem kullanılırsa, asp.net ile mail gönderilmeye çalışıldığında “The specified string is not in the form required for an e-mail address” hatasını almaktayım. Çözüm ise şimdilik yok. Sadece MailMessage nesnesinde bu mail adresini kullanmayıp mailin içinde bir yere gönderen adresi yazabilirsiniz. Ben .ReplyTo adresi olarak formdan girilen e-postayı kullanıyordum…