Вполне возможно, что люди, которые подписываются на вашу службу, вводят электронные письма с ошибками ввода, которые вы не исправляете. Например: chris@gmial.com -or- james@hotnail.com.
И такие домены сконфигурированы для использования в качестве spamtraps , которые автоматически помещают IP-адрес вашего почтового сервера и / или домен и повредить его репутации.
Чтобы избежать этого, выполните двойную проверку для адреса электронной почты, который вводится при подписке на продукт. Также отправьте электронное письмо с подтверждением, чтобы убедиться, что этот адрес электронной почты проверен на 100% человеком, который вводит письмо с подтверждением, прежде чем отправлять им ключ продукта или принять их подписку. Письмо с подтверждением должно требовать, чтобы получатель щелкнул ссылку или ответ, чтобы действительно подтвердить, что владельцем почтового ящика является человек, который зарегистрировался.
По вашему требованию вы можете сослаться на этот пример кода , который настраивает WebView и загружает файл pdf с хост-веб-приложением pdf.js .
[assembly: ExportRenderer(typeof(CustomWebView), typeof(CustomWebViewRenderer))]
namespace DisplayPDF.WinPhone81
{
public class CustomWebViewRenderer : WebViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
var customWebView = Element as CustomWebView;
Control.Source = new Uri(string.Format("ms-appx-web:///Assets/pdfjs/web/viewer.html?file={0}", string.Format ("ms-appx-web:///Assets/Content/{0}", WebUtility.UrlEncode(customWebView.Uri))));
}
}
}
}
Обновление
Таким образом, это работает. Но PDF должен быть частью проекта. Означает ли это, что нет способа отобразить случайные файлы, например, скачано из Интернета?
blockquote>Я вспоминаю случай, на который я ответил за последние несколько месяцев. Для отображения случайных файлов вы можете преобразовать pdf-файл в
Base64String
, а затем открыть его, вызвав функциюopenPdfAsBase64
JS в viewer.js. Подробнее см. Этот случай , ответ .Для лучшего понимания я создал пример кода , на который вы могли бы сослаться. перед его использованием необходимо поместить файл
hello.pdf
в папкуLocalState
. Потому что путь загрузки файла по умолчанию - папкаLocalState
, но он пуст при первом запуске.PDFViewRenderer.cs
public class PDFViewRenderer :WebViewRenderer { protected override void OnElementChanged(ElementChangedEventArgs<WebView> e) { base.OnElementChanged(e); if (e.NewElement != null) { Control.Source = new Uri("ms-appx-web:///Assets/pdfjs/web/viewer.html"); Control.LoadCompleted += Control_LoadCompleted; } } private async void Control_LoadCompleted(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e) { PDFView pdfView = Element as PDFView; if (string.IsNullOrEmpty(pdfView?.FileName)) return; try { var Base64Data = await OpenAndConvert(pdfView?.FileName); var obj = await Control.InvokeScriptAsync("openPdfAsBase64", new[] { Base64Data }); } catch (Exception ex) { throw ex; } } private async Task<string> OpenAndConvert(string FileName) { var folder = ApplicationData.Current.LocalFolder; var file = await folder.GetFileAsync(FileName); var filebuffer = await file.OpenAsync(FileAccessMode.Read); var reader = new DataReader(filebuffer.GetInputStreamAt(0)); var bytes = new byte[filebuffer.Size]; await reader.LoadAsync((uint)filebuffer.Size); reader.ReadBytes(bytes); return Convert.ToBase64String(bytes); } }
PDFView.cs
public class PDFView : WebView { public PDFView() { } public static readonly BindableProperty FileNameProperty = BindableProperty.Create( propertyName: "FileName", returnType: typeof(string), declaringType: typeof(PDFView), defaultValue: default(string)); public string FileName { get { return (string)GetValue(FileNameProperty); } set { SetValue(FileNameProperty, value); } } }
Использование
[ 113]Обратите внимание, что вам нужно использовать этот метод
viewer.js
, который был добавленopenPdfAsBase64
.