Ejemplo n.º 1
0
 /// <summary>
 /// Sends a comment update email.
 /// </summary>
 /// <returns>Dictionary with two keys: message and subject.</returns>
 public void sendMail(ref CreateEmailEventArgs args)
 {
     /* construct your message here */
     string message="A comment has been added<br>Subject:"+args.Reply.Subject+"<br>Message:"+args.Reply.Comment;
     /* this is what you're sending as an email */
     args.MessageBody = message;
     args.Subject = "A comment has been added.";
     return;
 }
Ejemplo n.º 2
0
 public void sendMail(ref CreateEmailEventArgs args)
 {
     /* construct your message here */
     string message="Your password is "+args.User.Password+".";
     /* this is what you're sending as an email */
     args.MessageBody = message;
     args.Subject = "Your password from "+Main.Site.Defaults.SiteName;
     return;
 }
Ejemplo n.º 3
0
 public void sendMail(ref CreateEmailEventArgs args)
 {
     /* construct your message here */
     string msg=@"You may be interested in "+args.Item.Number+
     @"<br>Here's a message from your friend <hr>"+args.UserComment;
     /* this is what you're sending as an email */
     args.MessageBody = msg;
     args.Subject = "Your friend "+args.User.Email+" thought you would be intrested in.";
     return;
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Emails A friend information about this item using the createemail event handler.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="user">The user.</param>
 /// <param name="message">The message.</param>
 /// <param name="emailTo">Send the email to.</param>
 /// <returns>{error:0,desc:"error description"}.</returns>
 public static Dictionary<string, object> EmailAFriend(Commerce.Item item, Commerce.User user, string message, string emailTo)
 {
     CreateEmailEventArgs emailArgs =
         new CreateEmailEventArgs("emailAFriend", Main.Site.site_operator_email, user.Email,
         Main.Site.site_log_email, user, Main.GetCurrentSession(), null, item, message, null);
     DefaultEmails.EmailAFriend(ref emailArgs);
     Main.Site.raiseOnCreateEmail(emailArgs);
     using(SqlConnection cn = Site.CreateConnection(true, true)) {
         cn.Open();
         return Commerce.SendEmailArgResult(emailArgs, cn, null);
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Resets the password of the account matching the email provided in the argument.
 /// An email will be sent to the account with the new randomly created password.
 /// </summary>
 /// <param name="email">The email.</param>
 /// <returns></returns>
 public static Dictionary<string, object> ResetPassword(string email)
 {
     Dictionary<string, object> j = new Dictionary<string, object>();
     /* see if the old password matches */
     using(SqlConnection cn = Site.CreateConnection(true, true)) {
         cn.Open();
         using(SqlCommand cmd = new SqlCommand(@"select userId from users with (nolock) where email = @email;
     update users set password = @newPassword where email = @email;
     ", cn)) {
             string newPassword = Guid.NewGuid().ToBase64Hash().Substring(1, 7);
             string hashPassword = Site.GetHash(newPassword);
             cmd.Parameters.Add("@email", SqlDbType.VarChar).Value = email;
             cmd.Parameters.Add("@newPassword", SqlDbType.VarChar).Value = hashPassword;
             using(SqlDataReader r = cmd.ExecuteReader()) {
                 if(!r.HasRows) {
                     j.Add("error", -1);
                     j.Add("description", "No such email.  Password reset failed.");
                 } else {
                     /* find the user's Id */
                     Rendition.Commerce.User user = Commerce.Users.GetUserByEmail(email);
                     /* set the new password while we know it */
                     user.Password = newPassword;
                     ("Password reset for user " + user.UserId + ".  New password:"******"lostPassword", Main.Site.site_operator_email, user.Email,
                         Main.Site.site_log_email, user, Main.GetCurrentSession(), null, null, "", null);
                     DefaultEmails.LostPassword(ref emailArgs);
                     Main.Site.raiseOnCreateEmail(emailArgs);
                     Commerce.SendEmailArgResult(emailArgs, cn, null);
                     j.Add("error", 0);
                     j.Add("description", "Password Reset.");
                 }
             }
         }
     }
     return j;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Raises the oncreateemail event.
 /// </summary>
 /// <param name="args">The <see cref="Rendition.CreateEmailEventArgs"/> instance containing the event data.</param>
 internal void raiseOnCreateEmail( CreateEmailEventArgs args )
 {
     if( CreatingEmail != null ) { CreatingEmail( this, args ); };
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Emails the user a shipment update containing all the information about their shipment.
 /// </summary>
 /// <param name="order">The order.</param>
 /// <param name="args">Dictionary containing the shipmentId.</param>
 /// <returns>{error:0,desc:"error description"}.</returns>
 public static Dictionary<string, object> ShipmentUpdateEmail(Commerce.Order order, ShipmentUpdateArgs args)
 {
     CreateEmailEventArgs emailArgs =
         new CreateEmailEventArgs("shipmentUpdate", Main.Site.site_operator_email, order.User.Email,
         Main.Site.site_log_email, order.User, null, order, null, "", args);
     DefaultEmails.ShipConfirm(ref emailArgs);
     Main.Site.raiseOnCreateEmail(emailArgs);
     Dictionary<string, object> f;
     using(SqlConnection cn = Site.CreateConnection(true, true)) {
         cn.Open();
         f = SendEmailArgResult(emailArgs, cn, null);
     }
     return f;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Used internally by other methods to clear the createemail event.
 /// </summary>
 /// <param name="emailArgs">The <see cref="Rendition.CreateEmailEventArgs"/> instance containing the event data.</param>
 /// <param name="cn">The cn.</param>
 /// <param name="trans">The trans.</param>
 /// <returns>
 /// {error:0,desc:"error description"}.
 /// </returns>
 public static Dictionary<string, object> SendEmailArgResult(CreateEmailEventArgs emailArgs,
 SqlConnection cn, SqlTransaction trans)
 {
     Dictionary<string, object> j = new Dictionary<string, object>();
     if(!emailArgs.AbortEmail) {
         SendEmail(emailArgs.MessageBody, emailArgs.Subject,
         emailArgs.MailTo, emailArgs.MailFrom, emailArgs.BCC, cn, trans);
         j.Add("error", 0);
         j.Add("description", "");
     } else {
         j.Add("error", -1);
         j.Add("description", "Email aborted by createemail event handler");
     }
     return j;
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Renders an email using the information provided in args.
 /// </summary>
 /// <param name="pathToEmail">The path to email source code (e.g.: ~/plugins/email/someEmail.cs).</param>
 /// <param name="args">The <see cref="Rendition.CreateEmailEventArgs"/> instance containing the event data.</param>
 /// <returns>{error:0,desc:"error description",message:"extended error info"}.</returns>
 public static Dictionary<string, object> RenderEmail(string pathToEmail, CreateEmailEventArgs args)
 {
     Dictionary<string, object> j = new Dictionary<string, object>();
     List<object> errors = new List<object>();
     string ext = Path.GetExtension(pathToEmail);
     pathToEmail = Rendition.Utilities.VirtualToPhysicalSitePath(pathToEmail);
     if(!File.Exists(pathToEmail)) {
         j.Add("error", -2);
         j.Add("description", "File does not exist.");
         return j;
     }
     string language = "";
     string sourceCode = File.ReadAllText(pathToEmail);
     if(ext == ".cs") {
         language = "CSharp";
         object email = null;
         try {
             object[] eventArgs = { args };
             email = Admin.ExecuteScript(sourceCode, language, "email", "sendMail", ref eventArgs, ref errors);
         } catch(Exception e) {
             j.Add("error", -5);
             j.Add("description", e.Message);
             return j;
         }
         if(errors.Count > 0) {
             j.Add("error", -3);
             j.Add("description", "One or more errors occured while compling the email script.");
             j.Add("errors", errors);
             return j;
         }
         if(email == null) {
             j.Add("error", -6);
             j.Add("description", "An unknown error occured while trying to render your email source code.");
             return j;
         }
         if(email.GetType() == typeof(Dictionary<string, object>)) {
             j.Add("error", 0);
             j.Add("description", "");
             j.Add("message", ((Dictionary<string, object>)email)["message"].ToString());
             j.Add("subject", ((Dictionary<string, object>)email)["subject"].ToString());
             return j;
         } else if(email.GetType() == typeof(string)) {
             j.Add("error", 0);
             j.Add("description", "");
             j.Add("message", email.ToString());
             return j;
         }
     } else if(ext == ".html" || ext == ".htm") {
         j.Add("error", 0);
         j.Add("description", "");
         j.Add("message", sourceCode);
         return j;
     }
     j.Add("error", -4);
     j.Add("description", "Unable to detect the type of source code for the input file (ext:" + ext +
     ").  Acceptable types are .cs (CSharp), .html or .htm.");
     return j;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Emails information about this order using the createemail event handler.
 /// </summary>
 /// <param name="order">The order.</param>
 /// <param name="cn">The cn.</param>
 /// <param name="trans">The trans.</param>
 /// <returns>
 /// {error:0,desc:"error description"}.
 /// </returns>
 public static Dictionary<string, object> PlacedOrderEmail(Commerce.Order order,
 SqlConnection cn, SqlTransaction trans)
 {
     User user = Main.Site.Users.List.Find(delegate(Commerce.User u) {
         return u.UserId == order.UserId;
     });
     CreateEmailEventArgs emailArgs =
         new CreateEmailEventArgs("orderConfirm", Main.Site.site_operator_email, user.Email,
         Main.Site.site_log_email, user, Main.GetCurrentSession(), order, null, "", null);
     DefaultEmails.OrderConfirm(ref emailArgs);
     Main.Site.raiseOnCreateEmail(emailArgs);
     return SendEmailArgResult(emailArgs, cn, trans);
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Emails the user a copy of their password using the createemail event handler.
 /// </summary>
 /// <param name="args">Dictionary containg the userId.</param>
 /// <returns>{error:0,desc:"error description"}.</returns>
 public static Dictionary<string, object> LostPasswordEmail(Dictionary<string, object> args)
 {
     Dictionary<string, object> j = new Dictionary<string, object>();
     if(args.ContainsKey("userId")) {
         j.Add("error", -1);
         j.Add("description", "Missing key userId.  Cannot send lost password email");
         return j;
     }
     int userId = (int)args["userId"];
     User user = Main.Site.Users.List.Find(delegate(Commerce.User u) {
         return u.UserId == userId;
     });
     CreateEmailEventArgs emailArgs =
         new CreateEmailEventArgs("lostPassword", Main.Site.site_operator_email, user.Email,
         Main.Site.site_log_email, user, Main.GetCurrentSession(), null, null, "", null);
     DefaultEmails.LostPassword(ref emailArgs);
     Main.Site.raiseOnCreateEmail(emailArgs);
     Dictionary<string, object> f;
     using(SqlConnection cn = Site.CreateConnection(true, true)) {
         cn.Open();
         f = SendEmailArgResult(emailArgs, cn, null);
     }
     return f;
 }
Ejemplo n.º 12
0
    /// <summary>
    /// Sends a shipment update mail.
    /// </summary>
    /// <param name="user">The user of the order.</param>
    /// <param name="order">The order.</param>
    /// <returns>Dictionary with two keys: message and subject.</returns>
    public void sendMail( ref CreateEmailEventArgs args )
    {
        String URL = Main.Site.Defaults.SiteUrl;
        StringBuilder b = new StringBuilder();
        Commerce.Shipment shipment = Commerce.Shipment.GetBestShipment( args.Order.Shipments );
        /* if the shipment being sent is not a lead shipment or has been voided abort the email */
        if( args.ShipmentUpdateArgs.Id != shipment.Id ) {
            args.AbortEmail = true;
            return;
        }
        b.Append( @"<h2>Your order has been shipped.</h2>" );
        b.Append("Purchase Order: "+args.Order.PurchaseOrder);
        b.Append( @"
        <table width='500'>
            <tr>
                <td>
                    Tracking Number
                </td>
                <td>
                    Date Shipped
                </td>
            </tr>" );

        b.Append( @"
        <tr>
            <td>
                " + shipment.Tracking + @"
            </td>
            <td>
                " + shipment.DateShipped + @"
            </td>
        </tr>" );
        b.Append( "</table>" );
        b.Append( @"
        <table width='500'>
            <tr>
                <td colspan='2'>
                    <div style='float:right;text-align:right;'>
                        <span><a href=" + URL + "/" + Main.Responder + "?method1=" +
                        ( "[\"printOrder\",[{\"orderNumber\":\"" + args.Order.OrderNumber + "\"}]]" ).UrlEncode() +
                        ">PRINT</a></span>" +
                    @"</div>
                </td>
            </tr>
            <tr>
                <td colspan='2'>THANKS AGAIN FOR YOUR ORDER!</td>
            </tr>
            <tr>
                <td colspan='2' bgcolor='#58595B'>
                    <font color='#ffffff'>PURCHASHING INFORMATION</font>
                </td>
            </tr>
            <tr>
                <td colspan='2'>
                    <strong>E-mail Address:</strong> " + args.User.Email + @"
                </td>
            </tr>
            <tr>
                <td valign='top' style='width:250px;'>
                    <h2>Bill To</h2>
                    " + args.Order.BillToAddress.FirstName + " " + args.Order.BillToAddress.LastName + "<br>" +
                    args.Order.BillToAddress.Address1 + "<br>" +
                    args.Order.BillToAddress.Address2 + "<br>" +
                    args.Order.BillToAddress.City + ", " + args.Order.BillToAddress.State + ", " + args.Order.BillToAddress.Zip +
                @"</td><td valign='top'>
                    <h2>Ship To</h2>
                    " + args.Order.ShipToAddress.FirstName + " " + args.Order.ShipToAddress.LastName + "<br>" +
                    args.Order.ShipToAddress.Address1 + "<br>" +
                    args.Order.ShipToAddress.Address2 + "<br>" +
                    args.Order.ShipToAddress.City + ", " + args.Order.ShipToAddress.State + ", " + args.Order.ShipToAddress.Zip +
                @"</td>
            </tr>
            <tr>
                <td colspan='2' bgcolor='#58595B'>
                    <font color='#FFFFFF'>Order Summary</font>
                </td>
            </tr>
            <tr>
                <td colspan='2'>
                    " + args.Order.OrderNumber + @"
                </td>
            </tr>
            <tr>
            <tr>
                <tr>
                <td colspan='2'>
                    <table width='100%'>
                        <tr>
                            <td>
                                Item No.
                            </td>
                            <td>
                                Qty.
                            </td>
                            <td>
                                Price
                            </td>
                        </tr>" );
        foreach( Commerce.Line c in args.Order.Lines ) {
            b.Append( @"<tr>
                    <td>" + c.ItemNumber + @"</td>
                    <td>" + c.Item.Description + @"</td>
                    <td>" + c.Qty + @"</td>
                    <td>" + c.Price.ToString( "f" ) + @"</td>
                </tr>" );
        };
        b.Append( @"
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td colspan='2'>
                    <table align='right'>
                        <tr>
                            <td align='left'>
                                Sub-total of Items:
                            </td>
                            <td align='right'>
                                " + args.Order.SubTotal.ToString( "c" ) + @"
                            </td>
                        </tr>
                        <tr>
                            <td align='left'>
                                Shipping &amp; Handling:
                            </td>
                            <td align='right'>
                                " + args.Order.ShippingTotal.ToString( "c" ) + @"
                            </td>
                        </tr>
                        <tr>
                            <td align='left'>
                                Sales Tax:
                            </td>
                            <td align='right'>
                                " + args.Order.TaxTotal.ToString( "c" ) + @"
                            </td>
                        </tr>
                        <tr>
                            <td align='left'>
                                Discount:
                            </td>
                            <td align='right'>
                                " + args.Order.Discount.ToString( "c" ) + @"
                            </td>
                        </tr>
                        <tr>
                            <td align='left'>
                                Total for this Order:
                            </td>
                            <td align='right'>
                                " + args.Order.GrandTotal.ToString( "c" ) + @"
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>" );
        args.MessageBody = b.ToString();
        args.Subject = "Order " + args.Order.OrderNumber + " from " + Main.Site.Defaults.SiteName;
        return;
    }
Ejemplo n.º 13
0
 /// <summary>
 /// Sends an new order mail.
 /// </summary>
 /// <param name="user">The user of the order.</param>
 /// <param name="order">The order.</param>
 /// <returns>Dictionary with two keys: message and subject.</returns>
 public void sendMail(ref CreateEmailEventArgs args)
 {
     String URL = Main.Site.Defaults.SiteUrl;
     StringBuilder b=new StringBuilder();
     b.Append(@"
     <table width='500'>
         <tr>
             <td colspan='2'>
                 <div style='float:right;text-align:right;'>
                     <span><a href="+URL+"/"+Main.Responder+"?method1="+
                     ("[\"printOrder\",[{\"orderNumber\":\""+args.Order.OrderNumber+"\"}]]").UrlEncode()+
                     ">PRINT</a></span>"+
                 @"</div>
             </td>
         </tr>
         <tr>
             <td><img src='http://"+URL+@"/img/blueStar.jpg'></td>
             <td>THANKS FOR YOUR ORDER!</td>
         </tr>
         <tr>
             <td colspan='2' bgcolor='#58595B'>
                 <font color='#ffffff'>PURCHASHING INFORMATION</font>
             </td>
         </tr>
         <tr>
             <td colspan='2'>
                 <strong>E-mail Address:</strong> "+args.User.Email+@"
             </td>
         </tr>
         <tr>
             <td>
                 <strong>Billing Address:</strong><br/>
                 "+args.Order.BillToAddress.CreateShortAddressBlock("<br/>")+@"
             </td>
             <td>
                 <strong>Shipping Address:</strong><br/>
                 "+args.Order.BillToAddress.CreateShortAddressBlock("<br/>")+@"
             </td>
         </tr>
         <tr>
             <td colspan='2' bgcolor='#58595B'>
                 <font color='#FFFFFF'>Order Summary</font>
             </td>
         </tr>
         <tr>
             <td colspan='2'>
                 ORDER #:
                 "+args.Order.OrderNumber+@"
             </td>
         </tr>
         <tr>
         <tr>
             <td colspan='2'>
                 <table width='100%'>
                     <tr>
                         <td>
                             Item No.
                         </td>
                         <td>
                             Qty.
                         </td>
                         <td>
                             Price
                         </td>
                     </tr>");
     foreach(Commerce.Line c in args.Order.Lines) {
         b.Append(@"<tr>
             <td>"+c.ItemNumber+@"</td>
             <td>"+c.Item.Description+@"</td>
             <td>"+c.Qty+@"</td>
             <td>"+c.Price.ToString("f")+@"</td>
         </tr>");
     };
     b.Append(@"
                     </tr>
                 </table>
             </td>
         </tr>
         <tr>
             <td colspan='2'>
                 <table align='right'>
                     <tr>
                         <td align='left'>
                             Sub-total of Items:
                         </td>
                         <td align='right'>
                             "+args.Order.SubTotal.ToString("c")+@"
                         </td>
                     </tr>
                     <tr>
                         <td align='left'>
                             Shipping &amp; Handling:
                         </td>
                         <td align='right'>
                             "+args.Order.ShippingTotal.ToString("c")+@"
                         </td>
                     </tr>
                     <tr>
                         <td align='left'>
                             Sales Tax:
                         </td>
                         <td align='right'>
                             "+args.Order.TaxTotal.ToString("c")+@"
                         </td>
                     </tr>
                     <tr>
                         <td align='left'>
                             Discount:
                         </td>
                         <td align='right'>
                             "+args.Order.Discount.ToString("c")+@"
                         </td>
                     </tr>
                     <tr>
                         <td align='left'>
                             Total for this Order:
                         </td>
                         <td align='right'>
                             "+args.Order.GrandTotal.ToString("c")+@"
                         </td>
                     </tr>
                 </table>
             </td>
         </tr>
     </table>");
     args.MessageBody = b.ToString();
     args.Subject = "Order "+args.Order.OrderNumber+" from "+Main.Site.Defaults.SiteName;
     return;
 }