I want to send the verification mail before the user can sign in for which I have written some code, but the problem if that it gives the error "Could not find a part of the path", but I cannot understand why it is giving the error. The error occurs while trying to read the .txt fle using StreamReader.

it says - Could not find a part of the path 'C:\JobPortal\EmailTemplates\VerifyNewUser.txt'.

but it should be searching at the following path -


The code is pasted below:

protected void RegisterUser_CreatedUser(object sender, EventArgs e)
        MembershipUser newUser = Membership.GetUser(RegisterUser.UserName);
        Guid newUserId = (Guid)newUser.ProviderUserKey;
        string urlBase = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath;
        string verifyUrl = "/VerifyNewUser.aspx?ID=" + newUserId.ToString();
        string fullPath = urlBase + verifyUrl;
        string AppPath = Request.ApplicationPath;
        StreamReader sr = new StreamReader(AppPath + "/EmailTemplates/VerifyNewUser.txt");

        MailMessage Mailmsg = new MailMessage();
        Mailmsg.IsBodyHtml = true;
        Mailmsg.From = new MailAddress("someidxxx@xxxxmail.com", "Jobs Portal Registration System");
        Mailmsg.To.Add(new MailAddress(RegisterUser.Email));
        Mailmsg.Subject = "New User Registration";

        Mailmsg.Body = sr.ReadToEnd();

        Mailmsg.Body = Mailmsg.Body.Replace("<%UserName%>", RegisterUser.UserName);
        Mailmsg.Body = Mailmsg.Body.Replace("<%VerificationUrl%>", fullPath);

        SmtpClient mailclient = new SmtpClient();
        mailclient.EnableSsl = true;
        //FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);

Edited by tapandesai007: n/a

5 Years
Discussion Span
Last Post by mani-hellboy

Instead of ApplicationPath try Server.MapPath. This will give the location relative to the server files (within IIS or whatever server you are using) instead of the location of the files on disc ,which is what ApplicationPath is giving you.
Server.MapPath will give the location from localhost, instead of from the C drive.


Ya hercles told correct use server.mappath my notification is don`t forgot "~" symbol in front of path

string path=server.MapPath("~\your_file_name.Extension");
This article has been dead for over six months. Start a new discussion instead.
Take the time to help us to help you. Please be thoughtful and detailed and be sure to adhere to our posting rules.