小编A. *_*kiy的帖子

Gmail错误:SMTP服务器需要安全连接,或者客户端未经过身份验证.服务器响应为:5.5.1需要身份验证

我正在使用以下代码发送电子邮件.代码在我的本地计算机中正常运行.但在生产服务器上我收到错误消息

var fromAddress = new MailAddress("mymailid@gmail.com");
var fromPassword = "xxxxxx";
var toAddress = new MailAddress("yourmailid@yourdoamain.com");

string subject = "subject";
string body = "body";

System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)       
};

using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})

smtp.Send(message);
Run Code Online (Sandbox Code Playgroud)

在我的Gmail A/c上,我从生产服务器运行代码后收到了以下电子邮件

嗨,

最近有人使用您的密码尝试登录您的Google帐户mymailid@gmail.com.此人正在使用电子邮件,客户端或移动设备等应用程序.

如果这是一名试图访问您帐户的劫机者,我们会阻止登录尝试.请查看登录尝试的详细信息:

星期五,2014年1月3日13:56:08 UTC时间地址:xxx.xx.xx.xxx(abcd.net.)地点:Philadelphia PA,Philadelphia,PA,USA

如果您无法识别此登录尝试,则其他人可能会尝试访问您的帐户.您应该立即登录您的帐户并重置密码.

重设密码

如果是您并且您在访问帐户时遇到问题,请完成http://support.google.com/mail?p=client_login中列出的问题排查步骤

您诚挚的,Google帐户团队

.net c# gmail smtp

241
推荐指数
13
解决办法
55万
查看次数

实体框架核心首先添加唯一约束代码

我找不到为我的field属性添加唯一约束的方法

public class User
{
    [Required]
    public int Id { get; set; }

    [Required]
    // [Index("IX_FirstAndSecond", 2, IsUnique = true)] not supported by core
    public string Email { get; set; }

    [Required]
    public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在用

 "Microsoft.EntityFrameworkCore": "1.0.1",
 "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
 "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
 "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-core

112
推荐指数
7
解决办法
7万
查看次数

服务器响应为:5.7.0必须首先发出STARTTLS命令.i16sm1806350pag.18 - gsmtp

我尝试使用gmail发送邮件,我得到一个例外 The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. i16sm1806350pag.18 - gsmtp

我写的用于发送邮件的代码是

MailMessage mail = new MailMessage(); 
mail.To.Add(txtEmail.Text.Trim()); 
mail.To.Add("Secondry@gmail.com");
mail.From = new MailAddress("mysendingmail@gmail.com");
mail.Subject = "Confirmation of Registration on Job Junction.";
string Body = "Hi, this mail is to test sending mail using Gmail in ASP.NET";
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
// smtp.Host = "smtp.gmail.com"; //Or …
Run Code Online (Sandbox Code Playgroud)

c# asp.net iis

39
推荐指数
5
解决办法
12万
查看次数

.NET Core从appsettings.json获取连接字符串

我开发了一个简单的Web应用程序,并且在将来,我希望将其作为多租户来实现.

所以我想直接将连接字符串写入OnConfiguring方法:

public class ApplicationContext : DbContext
{
    public DbSet<User> Users { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("connection string from appsettings.json");
        base.OnConfiguring(optionsBuilder);
    }
}
Run Code Online (Sandbox Code Playgroud)

启动课程:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationContext>();
    services.AddMvc();
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能从中提取连接字符串appsettings.jsonApplicationContext类?

我不想为ApplicationContext类创建任何构造函数.

c# .net-core asp.net-core

18
推荐指数
3
解决办法
3万
查看次数

Angular 2和浏览器自动填充

我正在使用Angular反应形式实现登录页面.如果表单无效,则禁用"登录"按钮.

import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';

@Component({
    selector: 'signin',
    templateUrl: './signin.component.html'
})
export class SignInComponent implements OnInit {
    private signInForm: FormGroup;

    constructor(private formBuilder: FormBuilder) { }

    ngOnInit() {
        this.buildForm();
    }

    private buildForm(): void {
        this.signInForm = this.formBuilder.group({
            userName: ['', [Validators.required, Validators.maxLength(50)]],
            password: ['', [Validators.required, Validators.maxLength(50)]]
        });

        this.signInForm.valueChanges
            .subscribe((data: any) => this.onValueChanged(data));

        this.onValueChanged();
    }

    private onValueChanged(data?: any) {
        console.log(data);
    }
Run Code Online (Sandbox Code Playgroud)

因此,当我在浏览器中启动它时,我预先填充了"userName"和"passwords"字段.在控制台中,我有值'{userName:"email@email.com",密码:""}',因此按钮"login"被禁用.但是,如果我点击页面上的某个地方,它会触发onValueChanged,我会看到'{userName:"email@email.com",密码:"123456"}',并启用按钮"login".

如果我进入隐身模式.我没有预先填充的字段(它们是空的),但是当我填充(选择)值时,在控制台中我看到'{userName:"email@email.com",密码:"123456"}'和按钮"login"无需任何额外点击即可启用.

可能是他们不同的事件?自动填充和自动填充?角度与它们的作用有何不同?

解决它的最佳方法是什么?为什么onValueChanged …

autocomplete autofill typescript angular

18
推荐指数
2
解决办法
3万
查看次数

如何使单选按钮和复选框的禁用/只读功能

我知道我们不能只读取单选按钮和复选框.我尝试禁用单选按钮和复选框,但在IE中它不清晰可见.

是否可以使用jQuery,CSS,JavaScript等禁用/ readonly?

html javascript css jquery

11
推荐指数
2
解决办法
5万
查看次数

实体框架核心以编程方式应用迁移

我有测试和实时数据库.对于测试数据库迁移,我在包管理器控制台中使用Add-Migration ...Update-Database语法.但对于实时数据库,我想在应用程序启动时以编程方式执行此操作.

以下代码对我没有帮助:

context.Database.Migrate();
Run Code Online (Sandbox Code Playgroud)

Invalid object name 'TempTenants'当我尝试将记录添加到不存在的表时,我有错误.这是我的新表.

但我有_EFMigrationsHistory桌子.而且我的所有迁移都是那些没有应用的迁移.但我没有看到新表.

如果我从测试数据库中手动删除表并尝试重现错误,我将得到相同的结果.

因此,context.Database.Migrate();仅创建包含所有迁移的新数据库(如果它不存在),但不更新(应用迁移)现有数据库.

我能这样做吗?我该如何解决?

ef-migrations entity-framework-core asp.net-core

9
推荐指数
1
解决办法
4011
查看次数

如何配置NLog以获取IP地址.NET Core

我开发.net核心应用程序并使用NLog作为日志框架.

如何设置NLog布局以获取远程IP地址?

不幸的是,NLog.Web.AspNetCore${aspnet-request.serverVariable=remote_addr}不支持.

可能是我可以以httpContext.Connection.RemoteIpAddress某种方式访问.

nlog asp.net-core

8
推荐指数
1
解决办法
3900
查看次数

回滚到Fluent Migrator中的先前版本

我正在尝试使用流畅的迁移器使用我的项目进行迁移.但由于缺乏文档,我正在努力弄清楚如何回滚并Down为我的迁移类调用该方法.

我使用初始版本1类设置数据库:

[Migration(1)]
public class Baseline : Migration
{
    public override void Up()
    {
        Execute.Script("1_Baseline\\baseline.sql");
    }

    public override void Down() { }
}
Run Code Online (Sandbox Code Playgroud)

我正在通过包含以下内容的批处理文件运行迁移:

"....\tools\fluentmigrator\migrate.exe" - connect"Data Source =.\ sqlexpress; Initial Catalog = ekmDomains; Integrated Security = true; multipleactiveresultsets = true;" --db SqlServer2005 --target"bin\Release\EkmDomains.Migrations.dll"

这很好用.然后我写了第二个迁移类来测试它:

[Migration(2)]
public class AddNewTable : Migration
{
    public override void Up()
    {
        Create.Table("NewTable").WithColumn("name").AsString();
    }

    public override void Down()
    {
        Delete.Table("NewTable");
    }
}
Run Code Online (Sandbox Code Playgroud)

再次运行批处理文件后,一切正常.然后,我查看了流畅的迁移器工具的命令行选项,并看到了一个--version选项.我认为回滚到以前的版本我想简单地提供--version 1DownAddNewTable将被调用.然而,这并没有发生.控制台只显示"提交事务"方法然后关闭.但该表尚未删除,版本号未更改.

我这样做的方式是错误的,还是有人能看到我这样做的一些根本缺陷?

.net c# migration fluent-migrator

7
推荐指数
1
解决办法
5025
查看次数

如何在 Angular 2 中订阅 DOMContentLoaded 事件?

我正在将 UI 主题从 Angular 1 移植到 Angular 2。在第 1 个版本中,我有$viewContentLoaded事件,我想将其重新制作为 Angular 2。

我正在尝试使用@HostListener('DOMContentLoaded'),但它不起作用(没有任何错误)。

我该如何解决?或者处理这个问题的最佳方法是什么?

typescript2.0 angular

7
推荐指数
1
解决办法
9836
查看次数