我需要在基于ASP.NET MVC的网站上支持邀请,以便成员可以邀请朋友加入。
是否存在可以为我执行此操作的现成组件,而不是从头开始?
答案 0 :(得分:3)
我不知道任何像ASP.NET MVC那样的“即插即用”系统,但无论如何你都可以轻松实现一个基本系统。
像这样创建一个InviteController:
using System.Net.Mail;
namespace InTouch.Controllers
{
public class YourApp.Controllers
{
public ActionResult Index()
{
return View();
}
[AcceptVerbs("POST")]
public ActionResult Index(string fromname, string fromemail, string toname, string toemail)
{
const string emailregex = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
var result = false;
ViewData["fromname"] = fromname;
ViewData["fromemail"] = fromemail;
ViewData["toname"] = toname;
ViewData["toemail"] = toemail;
if (string.IsNullOrEmpty(fromname)) ViewData.ModelState.AddModelError("name", "Please enter your name!");
if (string.IsNullOrEmpty(fromemail)) ViewData.ModelState.AddModelError("email", "Please enter your e-mail!");
if (!string.IsNullOrEmpty(fromemail) && !Regex.IsMatch(fromemail, emailregex)) ViewData.ModelState.AddModelError("email", "Please enter your e-mail!");
if (string.IsNullOrEmpty(toname)) ViewData.ModelState.AddModelError("comments", "Please enter a message!");
if (!string.IsNullOrEmpty(toemail) && !Regex.IsMatch(toemail, emailregex)) ViewData.ModelState.AddModelError("email", "Please enter a valid recipient e-mail!");
if (!ViewData.ModelState.IsValid) return View();
var message = new MailMessage(fromemail, toemail)
{
Subject = "You have been invited to MyNewApp by " + fromname + "!",
Body = fromname + " wants to invite you. Click my link httpwwwblahblah to join them!"
};
SmtpClient smtp = new SmtpClient();
try
{
smtp.Send(message);
result = true;
}
catch { }
return View("Thankyou");
}
}
}
然后你只需要一个表格视图。这样的东西,符合你的口味:
<form id="invite" method="post">
<fieldset><legend>Invite a friend!</legend>
<%=Html.ValidationMessage("fromname")%>
<%=Html.ValidationMessage("fromemail")%>
<%=Html.ValidationMessage("toname")%>
<%=Html.ValidationMessage("toemail")%>
Your Name: <input type="text" id="fromname" name="fromname" class="required" value="<%= ViewData["fromname"] ?? "" %>" /><br />
Your Email: <input type="text" id="fromemail" name="fromemail" class="required" value="<%= ViewData["fromemail"] ?? "" %>" /><br />
Friend's Name: <input type="text" id="toname" name="toname" class="required" value="<%= ViewData["toname"] ?? "" %>" /><br />
Friend's Email: <input type="text" id="toemail" name="toemail" class="required" value="<%= ViewData["toemail"] ?? "" %>" /><br />
<input type="submit" id="action" name="action" value="Submit" />
</fieldset></form>
应该可以在不使应用程序的其余部分复杂化的情况下完成任务!
答案 1 :(得分:0)
首先,有一些提供商可以与WebServices和其他通信方法进行非常好的交互。尝试搜索适合您需求的Invite API。我不会像其他人所说的那样设置一个“通过电子邮件邀请”控制器,自己做邮件时会有“危险”。
假设您正在开发的页面偷看并拥有大量访问者,例如2000名访问者,他们所有人都想邀请10位朋友,现在有2万人邀请。如果您要从服务器请求20 000个SMTP发送,很多服务器会将您列入黑名单,现在这不好。
因此,您需要创建一个更高级别的邀请流程,您可以将所有邀请存储在数据库中并使用调度程序每分钟发送10封邮件,或使用可以处理大量邀请的第三方提供商。
永远不要想到小
如果你想通过facebook,myspace,twitter或者你想到的任何东西来邀请,那么就有那些难以管理的API。