sharepoint - mailto:从项目中提取电子邮件地址
问题描述
我正在寻找要发送的电子邮件,该电子邮件将填充电子邮件的电子邮件地址、主题和正文。我尝试了以下方法,但它不起作用。有人可以帮忙吗?
<script src="/SiteAssets/jquery-3.4.0.js"></script>
<script type="text/javascript">
function SendMail()
{
var emailID = getEmailFromPeoplePicker('User Requesting Assistance');
var subject = getSubject('Ticket Number');
var body = getBody('Description of Problem');
location.href = "mailto:"+emailID+"?subject="+subject+"&body="+body;
}
function getSubject(subject)
{
return $('input[title="'+subject+'"]').val();
}
function getBody(body)
{
return $('input[title="'+body+'"]').val();
}
function getEmailFromPeoplePicker(title) {
//Get the people picker field
var ppDiv = $("div[title='" + title + "']")[0];
//cast the object as type PeoplePicker
var peoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[ppDiv.id];
//Get list of users from field (assuming 1 in this case)
var userList = peoplePicker.GetAllUserInfo();
var userInfo = userList[0];
var userEmail;
//The description field contains the login info without the lookup extras. In new forms this
//field can be undefined depending on the field being checked. Only check if userInfo is
//initialized.
if(userInfo != null)
{
userEmail = userInfo.EntityData.Email;
}
return userEmail;
}
</script>
<a href="#" onclick="SendMail()">Email User</a>
解决方案
如果您在帖子中使用代码,“票号”和“问题描述”将都是单个文本字段。如果“问题描述”字段是多行文本字段,则代码将不起作用。
要获取多行文本,我们可以使用下面的代码来实现。如果您无法获取用户的电子邮件,则需要检查用户是否有电子邮件(转到用户配置文件查看)。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
function SendMail(){
var emailID = getEmailFromPeoplePicker('User Requesting Assistance');
var subject = getSubject('Ticket Number');
var body = getBody('Description of Problem');
location.href = "mailto:"+emailID+"?subject="+subject+"&body="+body;
}
function getSubject(subject){
return $('input[title="'+subject+'"]').val();
}
function getBody(body){
return $('nobr:contains("'+body+'")').closest('tr').find('.ms-rtestate-write')[0].innerText;
}
function getEmailFromPeoplePicker(title) {
//Get the people picker field
var ppDiv = $("div[title='" + title + "']")[0];
//cast the object as type PeoplePicker
var peoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[ppDiv.id];
//Get list of users from field (assuming 1 in this case)
var userList = peoplePicker.GetAllUserInfo();
var userInfo = userList[0];
var userEmail;
//The description field contains the login info without the lookup extras. In new forms this
//field can be undefined depending on the field being checked. Only check if userInfo is
//initialized.
if(userInfo != null){
userEmail = userInfo.EntityData.Email;
}
return userEmail;
}
</script>
<a href="#" onclick="SendMail()">Email User</a>
推荐阅读
- visual-studio-code - 'code' 未被识别为内部或外部命令 - Microsoft Visual Studio Code
- android - Android KitKat (API 19) 的提醒通知
- angularjs - AngularJS 文档教程中关于 $controller 服务的问题
- google-apps-script - 多个 OnFormSubmit 触发器到特定电子表格
- jmeter - 在 JMeter 中录制时出现“此页面无法显示”错误
- angular-material - #Angular7 [ngStyle] 背景图像在 Angular 7 材质中不起作用
- java - 使用 maven 升级到 Java 11、sonarqube、jacoco 导致错误
- wpf - css !在 WPF 风格中很重要
- symfony - Symfony 3.4 中的 Doctrine QueryBuilder JOIN 查询中的扁平数组结构
- reactjs - 如何在 react-select 中做单元素视图应该看起来像多?